Thunder, Ice, and Everything Nice tienwiki https://tien.miraheze.org/wiki/Thunder,_Ice,_and_Everything_Nice_Wiki MediaWiki 1.40.1 first-letter Media Special Talk User User talk Thunder, Ice, and Everything Nice Thunder, Ice, and Everything Nice talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Module Module talk Template:Clear 10 84 603 2022-03-08T14:12:32Z m>DarkMatterMan4500 0 Created page with "<div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Thunder, Ice, and Everything Nice Wiki 0 2 2 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> Saturday D&D We're a collaborative community website about {{topic}} that anyone, including you, can build and expand. Wikis like this one depend on readers getting involved and adding content. Click the "ADD NEW PAGE" or "EDIT" button at the top of any page to get started! ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Placeholder | [[A page about your topic]] |link=A page about your topic File:Placeholder | [[A Main Character]] |link=A Main Character File:Placeholder | [[The First Episode]] |link=The First Episode File:Placeholder | [[An Important Location]] |link=An Important Location File:Placeholder | [[A Key Event]] |link=A Key Event File:Placeholder | [[A Crucial Item]] |link=A Crucial Item </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] 5a91f33db42e924b78b7b31707417858d8dc3b9f Template:Album 10 3 13 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Album"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="artist"><label>Artist</label></data> <data source="released"><label>Released</label></data> <data source="recorded"><label>Recorded</label></data> <data source="length"><label>Length</label></data> <data source="label"><label>Label</label></data> <data source="producer"><label>Producer</label></data> </infobox></includeonly><noinclude>{{Documentation}}</noinclude> 7145bd5ecd9bcafcf1907686b6a57145c9c894ac Template:Album/doc 10 4 14 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Album | title = | image = [e.g. "Example.jpg"] | imagecaption = | artist = | released = | recorded = | length = | label = | producer = }} </pre> == Sample output == {{Album | title = Fleur | image = Example.jpg | artist = Marigold | released = June 2012 | recorded = 2011 | length = 88:88 | label = Spring | producer = Daffy }} <pre> {{Album | title = Fleur | image = Example.jpg | artist = Marigold | released = June 2012 | recorded = 2011 | length = 88:88 | label = Spring | producer = Daffy }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 34c5cd77d0a20c3509b82f0386c7429a8b47a5fb Template:Documentation 10 5 15 2022-03-29T00:54:59Z FANDOM 4 Draft subpages are deprecated with UCP. Default is "/sandbox". wikitext text/x-wiki <includeonly>{| class="article-table plainlinks" style="width:100%;" role="complementary" |- style="font-size:18px;" ! style="padding:0px;" | <div style="width:100%; padding:3px 0px; text-align:center;" class="color1">Template documentation</div> |- | ''Note: portions of the template sample may not be visible without values provided.'' |- | View or edit [[{{{1|Template:{{PAGENAMEE}}/doc}}}|this documentation]]. ([[Template:Documentation|About template documentation]]) |- | Editors can experiment in this template's [{{fullurl:{{FULLPAGENAMEE}}/sandbox|action=edit}} sandbox] and [{{fullurl:{{FULLPAGENAMEE}}/testcases}} test case] pages. |} <div style="margin:0 1em;"> {{{{{1|{{PAGENAME}}/doc}}}}}</div></includeonly><noinclude>{{Documentation}}[[Category:Documentation templates]]</noinclude> ee98b7264ecdfefae4fda4e94a64c1d0e275ee55 Template:T 10 6 16 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <onlyinclude><nowiki>{{</nowiki>{{#if:{{{prefix|}}}|{{{prefix}}}:}}[[Template:{{{1}}}|{{{1}}}]]<!-- -->{{#if:{{{2|}}}|&#124;<span style="color:#555;">''&lt;{{{2}}}&gt;''</span>}}<!-- -->{{#if:{{{3|}}}|&#124;<span style="color:#555;">''&lt;{{{3}}}&gt;''</span>}}<!-- -->{{#if:{{{4|}}}|&#124;<span style="color:#555;">''&lt;{{{4}}}&gt;''</span>}}<!-- -->{{#if:{{{5|}}}|&#124;<span style="color:#555;">''&lt;{{{5}}}&gt;''</span>}}<!-- -->{{#if:{{{6|}}}|&#124;<span style="color:#555;">''&lt;{{{6}}}&gt;''</span>}}<!-- -->{{#if:{{{7|}}}|&#124;<span style="color:#555;">''&lt;{{{7}}}&gt;''</span>}}<!-- -->{{#if:{{{8|}}}|&#124;<span style="color:#555;">''&lt;{{{8}}}&gt;''</span>}}<!-- -->{{#if:{{{9|}}}|&#124;<span style="color:#555;">''&lt;{{{9}}}&gt;''</span>}}<!-- -->{{#if:{{{10|}}}|&#124;<span style="color:#555;">''&lt;{{{10}}}&gt;''</span>}}<!-- -->{{#if:{{{11|}}}|&#124;<span style="color:#555;">''&lt;{{{11}}}&gt;''</span>}}<!-- -->{{#if:{{{12|}}}|&#124;<span style="color:#555;">''&lt;{{{12}}}&gt;''</span>}}<!-- -->{{#if:{{{13|}}}|&#124;<span style="color:#555;">''&lt;{{{13}}}&gt;''</span>}}<!-- -->{{#if:{{{14|}}}|&#124;<span style="color:#555;">''&lt;{{{14}}}&gt;''</span>}}<!-- -->{{#if:{{{15|}}}|&#124;<span style="color:#555;">''&lt;{{{15}}}&gt;''</span>}}<!-- -->{{#if:{{{16|}}}|&#124;<span style="color:#555;">''&lt;{{{16}}}&gt;''</span>}}<!-- -->{{#if:{{{17|}}}|&#124;<span style="color:#555;">''&lt;{{{17}}}&gt;''</span>}}<!-- -->{{#if:{{{18|}}}|&#124;<span style="color:#555;">''&lt;{{{18}}}&gt;''</span>}}<!-- -->{{#if:{{{19|}}}|&#124;<span style="color:#555;">''&lt;{{{19}}}&gt;''</span>}}<!-- -->{{#if:{{{20|}}}|&#124;<span style="color:#555;">''&lt;{{{20}}}&gt;''</span>}}<!-- -->{{#if:{{{21|}}}|&#124;<span style="color:#555;">''&lt;{{{21}}}&gt;''</span>}}<!-- --><nowiki>}}</nowiki></onlyinclude><noinclude>{{documentation}}</noinclude> 4273916fece7a96eef48125efb615009a1fd6fe6 Template:Documentation/doc 10 7 17 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ==Description== This template is used to insert descriptions on template pages. ==Syntax== Add <code><nowiki><noinclude></nowiki>{{t|Documentation}}<nowiki></noinclude></nowiki></code> at the end of the template page. Add <code><nowiki><noinclude></nowiki>{{t|Documentation|documentation page}}<nowiki></noinclude></nowiki></code> to transclude an alternative page from the /doc subpage. ==Usage== ===On the Template page=== This is the normal format when used: <pre> TEMPLATE CODE <includeonly>Any categories to be inserted into articles by the template</includeonly> <noinclude>{{Documentation}}</noinclude> </pre> ''If your template is not a completed div or table, you may need to close the tags just before <code><nowiki>{{Documentation}}</nowiki></code> is inserted (within the noinclude tags).'' ''A line break right before <code><nowiki>{{Documentation}}</nowiki></code> can also be useful as it helps prevent the documentation template "running into" previous code.'' ===On the documentation page=== The documentation page is usually located on the /doc subpage for a template, but a different page can be specified with the first parameter of the template (see [[#Syntax|Syntax]]). Normally, you will want to write something like the following on the documentation page: <pre> ==Description== This template is used to do something. ==Syntax== Type <code>{{t|templatename}}</code> somewhere. ==Samples== <code>&lt;nowiki>{{templatename|input}}&lt;/nowiki></code> results in... {{templatename|input}} <includeonly>Any categories for the template itself</includeonly> <noinclude>[[Category:Template documentation]]</noinclude> </pre> Use any or all of the above description/syntax/sample output sections. You may also want to add "see also" or other sections. Note that the above example also uses the [[Template:T]] template. <includeonly>[[Category:Documentation templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 58ca364cb71b551e4a71ddf3046cf41c84db0d57 Template:T/doc 10 8 18 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description A template link with a variable number of parameters (0-20). ;Syntax :{{t|t|parameter1|parameter2|parameter3|parameter4|...|parameter20}} <!-- self-referential examples! --> ;Source :Improved version not needing t/piece subtemplate developed on [http://templates.fandom.com Templates wiki] see the [http://templates.fandom.com/index.php?title=Template:T&action=history list of authors]. Copied here via CC-By-SA 3.0 license. ;Example :{{t|t|param1|param2}} <includeonly>[[Category:General wiki templates]]</includeonly> <noinclude>[[Category:Template documentation]]</noinclude> 6f7307b6bcfef75efcc1d71fc932366c04cd61b3 Template:Character 10 9 19 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Character"> <title source="name"/> <image source="image"> <caption source="imagecaption" /> </image> <group> <data source="aliases"><label>Aliases</label></data> <data source="relatives"><label>Relatives</label></data> <data source="affiliation"><label>Affiliation</label></data> <data source="occupation"><label>Occupation</label></data> </group> <group> <header>Biographical information</header> <data source="marital"><label>Marital status</label></data> <data source="birthDate"><label>Date of birth</label></data> <data source="birthPlace"><label>Place of birth</label></data> <data source="deathDate"><label>Date of death</label></data> <data source="deathPlace"><label>Place of death</label></data> </group> <group> <header>Physical description</header> <data source="species"><label>Species</label></data> <data source="gender"><label>Gender</label></data> <data source="height"><label>Height</label></data> <data source="weight"><label>Weight</label></data> <data source="eyes"><label>Eye color</label></data> </group> <group> <header>Appearances</header> <data source="portrayedby"><label>Portrayed by</label></data> <data source="appearsin"><label>Appears in</label></data> <data source="debut"><label>Debut</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}}</includeonly><noinclude>{{Documentation}}</noinclude> f63ba56dbc9f4a25683ff5d7104509d0e8bb9eda Template:Character/doc 10 10 21 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | imagecaption = | aliases = | relatives = | affiliation = | occupation = | marital = | birthDate = | birthPlace = | deathDate = | deathPlace = | species = | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} <pre> {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 6ddf3451fd7140d6b498a17d53162a4ccd65e691 Template:Book 10 11 22 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Book"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="author"><label>Author</label></data> <data source="illustrator"><label>Illustrator</label></data> <data source="datePublished"><label>Published on</label></data> <data source="publisher"><label>Publisher</label></data> <group layout="horizontal"> <header>Publication order</header> <data source="previous"><label>Previous</label></data> <data source="next"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Books]]}}</includeonly><noinclude>{{Documentation}}</noinclude> c4bc425c60ee6f1a263f67a75f6d26aafc236c03 Template:Book/doc 10 12 23 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Book | title = | image = [e.g. "Example.jpg"] | author = | illustrator = | datePublished = | publisher = | previous = | next = }}</pre> == Sample output == {{Book | title = The Adventures of Flower | image = Example.jpg | author = Alice | illustrator = Bob | datePublished = April 1928 | publisher = Arthur's | previous = Book One | next = Book Three }} <pre>{{Book | title = The Adventures of Flower | image = Example.jpg | author = Alice | illustrator = Bob | datePublished = April 1928 | publisher = Arthur's | previous = Book One | next = Book Three }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7320d1953158c6673ed6ce2be7bc35e2356522e5 Template:Episode 10 13 24 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Episode"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="partOfSeason"><label>Season</label></data> <data source="episodeNumber"><label>Episode</label></data> <data source="airDate"><label>Air date</label></data> <data source="writer"><label>Writer</label></data> <data source="director"><label>Director</label></data> <group layout="horizontal"> <header>Episode guide</header> <data source="previousEpisode"><label>Previous</label></data> <data source="nextEpisode"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Episodes]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 222b04973118bf9a11e3e5f3a034c07b6ec30fee Template:Episode/doc 10 14 25 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Episode | title = | partOfSeason = | episodeNumber = | image = [e.g. "Example.jpg"] | airDate = | writer = | director = | previousEpisode = | nextEpisode = }}</pre> == Sample output == {{Episode | title = Flower of Babel | partOfSeason = One | episodeNumber = Three | image = Example.jpg | airDate = Unaired | writer = D. Righta | director = A. di Rektour | previousEpisode = Episode Two | nextEpisode = Episode Four }}<pre>{{Episode | title = Flower of Babel | partOfSeason = One | episodeNumber = Three | image = Example.jpg | airDate = Unaired | writer = D. Righta | director = A. di Rektour | previousEpisode = Episode Two | nextEpisode = Episode Four }}</pre> <includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 422683315393b9908127727460675544f6ffb8cf Template:Event 10 15 26 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Event"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="performers"><label>Performers</label></data> <data source="date"><label>Date</label></data> <data source="location"><label>Location</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Events]]}}</includeonly><noinclude>{{Documentation}}</noinclude> d66b112135e43b8474d30a6dab0feaab6588dfe8 Template:Event/doc 10 16 27 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Event | title = | image = [e.g. "Example.jpg"] | imagecaption = | performers = | date = | location = }} </pre> == Sample output == {{Event | title = Flower du Jour | image = Example.jpg | performers = Awesome Ones | date = All the time | location = Everywhere }} <pre> {{Event | title = Flower du Jour | image = Example.jpg | performers = Awesome Ones | date = All the time | location = Everywhere }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 1502585ceb0f0a7e1e70edc0fa8c88720e7da905 Template:Item 10 17 28 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Item"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="type"><label>Type</label></data> <data source="effects"><label>Effects</label></data> <data source="source"><label>Source</label></data> <data source="buy"><label>Cost to buy</label></data> <data source="sell"><label>Cost to sell</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Items]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 1c76f47b4d1d6c296c09c245c7dd7d4efc9ff9e6 Template:Item/doc 10 18 29 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Item | title = | image = [e.g. "Example.jpg"] | imagecaption = | type = | effects = | source = | buy = | sell = }} </pre> == Sample output == {{Item | title = Power Flower | image = Example.jpg | type = Food | effects = +1 Fire | source = Vendor | buy = 5g | sell = 1g }}<pre> {{Item | title = Power Flower | image = Example.jpg | type = Food | effects = +1 Fire | source = Vendor | buy = 5g | sell = 1g }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ecd61f0a9df462e9790349a7ef0034b375ef0e2b Template:Location 10 19 30 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Location"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <image source="map"><caption source="mapcaption"/></image> <data source="type"><label>Type</label></data> <data source="level"><label>Level</label></data> <data source="location"><label>Location</label></data> <data source="inhabitants"><label>Inhabitants</label></data> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Locations]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 74c089bf3093e560bd6a2144977d9d0bc5faebc0 Template:Location/doc 10 20 31 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Location | title = | image = [e.g. "Example.jpg"] | imagecaption = | map = [e.g. "Example.jpg"] | mapcaption = | type = | level = | location = | inhabitants = }} </pre> == Sample output == {{Location | title = Flora Island | image = Example.jpg | imagecaption = The island | map = Example.jpg | mapcaption = Zone map | type = Contested | level = 1-5 | location = Earth | inhabitants = Stompy Humans, Drinky Bees }}<pre> {{Location | title = Flora Island | image = Example.jpg | imagecaption = The island | map = Example.jpg | mapcaption = Zone map | type = Contested | level = 1-5 | location = Earth | inhabitants = Stompy Humans, Drinky Bees }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e3e627290fa1c04d98083b44bcd2fa5cb562e13c Template:Navbox 10 21 32 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki {| style="width:100%; margin-top:1em; border:1px solid #999; font-size:90%; text-align:center;" |- ! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}} |- | style="padding:0.2em 0.5em;" | {{{body}}} |}<noinclude> {{documentation}}</noinclude> 21aa3440d9c06c537ca5808c298e155d57e8dc90 Template:Navbox/doc 10 22 33 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to create a basic navigation box. You can do so by calling the template, via the steps under "Syntax", but it is recommended to '''copy the code verbatim''' via the steps under "Navbox Creation". ;Navbox Creation <inputbox> type=create prefix=Template: preload=Template:Navbox editintro=Template:Navbox/doc buttonlabel=Make your navbox! default = Navbox Foo </inputbox> #Think of a name for your navbox, like "Navbox Foo". Type it in the above field, press the button, and save the page immediately. Be ready to return to ''this'' page to see the rest of the instructions. #Edit the resulting page in source mode. #Replace <code>{{{header}}}</code> with the text you would like to appear in the header. #Replace <code>{{{body}}}</code> with the text you would like to appear in the body. #To add another section, copy these four lines of code immediately below the lines in the existing code that they resemble: <pre>|- ! style="padding:0.2em 0.5em;" nowrap="nowrap" class="color1" | {{{header}}} |- | style="padding:0.2em 0.5em;" | {{{body}}}</pre> Save the page once you have added as many sections as you needed, and filled them with content. You may also want to create a /doc subpage explaining that to call the resulting template, one must only type <code>{<nowiki/>{Navbox Foo}}</code>, or rather, whatever we decided to name the template in step 1. ;Syntax <pre>{{navbox |header=Land of Bob |body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>. }}</pre> :Results in... {{navbox |header=Land of Bob |body=This <nowiki>[[place]]</nowiki> and that <nowiki>[[place]]</nowiki>. }} <includeonly>[[Category:Navbox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 4b1a1bf5f00c2d159d30d8f8bc525309ac16d406 Template:Quest 10 23 34 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Quest"> <title source="title"/> <image source="image"><caption source="imagecaption"/></image> <data source="start"><label>Start</label></data> <data source="end"><label>End</label></data> <data source="prerequisites"><label>Prerequisites</label></data> <data source="level"><label>Level</label></data> <data source="location"><label>Location</label></data> <data source="rewards"><label>Rewards</label></data> <group layout="horizontal"> <header>Quest progression</header> <data source="previous"><label>Previous</label></data> <data source="next"><label>Next</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Quests]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 1057bf1c3220419334e60f6b01c07995f871d8f8 Template:Quest/doc 10 24 35 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Quest | title = | image = [e.g. "Example.jpg"] | imagecaption = | start = | end = | prerequisites = | level = | location = | rewards = | previous = | next = }} </pre> == Sample output == {{Quest | title = Example infobox | image = Example.jpg | start = Chrys | end = Geran | prerequisites = None | level = 5 | location = Earth | rewards = Justice-Wrought Petals | previous = A | next = C }} <pre>{{Quest | title = Example infobox | image = Example.jpg | start = Chrys | end = Geran | prerequisites = None | level = 5 | location = Earth | rewards = Justice-Wrought Petals | previous = A | next = C }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 3c80ee4fc3fe45023bd67b3c400b2e64f4f2892a File:Wiki.png 6 25 36 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki [[Category:Wiki skin images]] f0235f85e2414431e046ae251792bf050daef5f7 Template:Permission 10 26 37 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file is copyrighted. The copyright holder has given permission for its use.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files used with permission]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 5940d21c4cf55ab1e46623c8d7202220620ea3fc Template:Fairuse 10 27 38 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file is copyrighted. It will be used in a way that qualifies as fair use under US copyright law.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Fairuse files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 5db6645c70193dbeb65eed77de07f36451e1145c Template:Self 10 28 39 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file was uploaded by the photographer or author.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files uploaded by the photographer or author]]</includeonly>}}<noinclude> {{documentation}}</noinclude> c3570ab7a69cc0cdf1478e8b7d45f8c70f1214c0 Template:From Wikimedia 10 29 40 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file was originally uploaded on Wikipedia or another Wikimedia project.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Files from WikiMedia projects]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 72fed0e402d6912cd6381ef1b21b52929b041d8c Template:CC-BY-SA 10 30 41 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under the [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:CC-BY-SA files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> b7cc0c0ae4d0cbff86fb66f332cdbfd9ef0c67f1 Template:Other free 10 31 42 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under a free license.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Freely licensed files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> a0e93bfb8a804eb54e67553ff50ba57b368ba00d Template:PD 10 32 43 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{LicenseBox|text=''This file is in the public domain''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Public domain files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> daf709f747ba95ea06112acade4c78177a475e30 Template:Permission/doc 10 33 44 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images as being copyrighted, but the copyright holder has given permission for its use. ;Syntax :Type <code>{{t|permission}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e2fc5fa15609d14fe9de91b503904f2b3f363afa Template:Fairuse/doc 10 34 45 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images as fair use. ;Syntax :Type <code>{{t|fairuse}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> a0b1f9487b6ecaaa0f6ea70533a69c17d42e01ff Template:Self/doc 10 35 46 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images as having been uploaded by the photographer or author. ;Syntax :Type <code>{{t|self}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 8daf839df62f0465275f6ef57c3998c9af9e4e1d Template:From Wikimedia/doc 10 36 47 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images as having been uploaded on [[wikipedia:|Wikipedia]] or another [[wikimedia:|Wikimedia]] project. ;Syntax :Type <code>{{t|From Wikimedia}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 077fe0f228cb18bf949fee95011ec7b36fe64033 Template:CC-BY-SA/doc 10 37 48 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images with the CC-BY-SA license. ;Syntax :Type <code>{{t|CC-BY-SA}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 4fa145ced3f3a218b897f635df8d678eeff73464 Template:Other free/doc 10 38 49 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images with a free license not covered by other image templates. ;Syntax :Type <code>{{t|Other free}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f4a03ee383d67da50c93408169b82b8217ff1404 Template:PD/doc 10 39 50 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark images as being in the public domain. ;Syntax :Type <code>{{t|PD}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> bf14002371e6786761dfb4a58f4fdaf44062b8cc Template:Topic 10 40 51 2022-03-29T00:54:59Z FANDOM 4 Created page with "<includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude>" wikitext text/x-wiki <includeonly>{{#sub:{{#replace:{{SITENAME}}| Wiki}}|-{{#len:{{#replace:{{SITENAME}}| Wiki}}}}-1}}</includeonly><noinclude>{{documentation}}</noinclude> e8c5bb53e6d20ba0b81fcfa08813051675219442 Template:Topic/doc 10 41 52 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == This template uses your wiki's <code>SITENAME</code> and strips off the word "wiki" leaving what is in most cases the text describing the topic of your wiki. To use this template in its basic form, simply add the {{T|{{BASEPAGENAME}}}} template wherever you want your topic to appear in a sentence or section. If your wiki's <code>SITENAME</code> minus the word "wiki" is not a good descriptor for your wiki's topic, you may also simply edit the template and replace it with just the text you want displayed. == Syntax == <pre>{{Topic}}</pre> == Sample output == {{Topic}} <includeonly>[[Category:Templates]]</includeonly><noinclude>[[Category:Template documentation|{{PAGENAME}}]]</noinclude> 54e98cb6fa2fa6aec9e9fa9b138b0cd6d5bf321b Category:Infobox templates 14 42 53 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Templates 14 43 54 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Maintenance]]" wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Category:Maintenance 14 44 55 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki The subcategories of this category contain pages that have been identified as needing attention for one or more of the following reasons: * Changes have been suggested that should be discussed first or are under discussion. * The page has flaws that need addressing by an editor with the knowledge or skills to help. * The action the page needs requires special rights. ''See also:'' {{cols|2| * [[Special:BrokenRedirects|Broken redirects]] * [[Special:DoubleRedirects|Double redirects]] * [[Special:UncategorizedCategories|Uncategorized categories]] * [[Special:UncategorizedFiles|Uncategorized files]] * [[Special:UncategorizedPages|Uncategorized pages]] * [[Special:UncategorizedTemplates|Uncategorized templates]] * [[Special:WantedCategories|Wanted categories]] * [[Special:WantedFiles|Wanted files]] * [[Special:WantedPages|Wanted pages]] * [[Special:WantedTemplates|Wanted templates]] * [[Special:TrackingCategories|Other special tracking categories]] }} [[Category:{{SITENAME}}]] 3646bf22bbf81213a9b8ea11df02ceee8866b235 Category:Image license templates 14 45 56 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Navbox templates 14 46 57 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:General wiki templates 14 47 58 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Documentation templates 14 48 59 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Template documentation 14 49 60 2022-03-29T00:54:59Z FANDOM 4 Created page with "The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template. [[Category:Templates]]" wikitext text/x-wiki The templates in this category contain documentation about other templates. The are automatically put here by the {{T|Documentation}} template. [[Category:Templates]] e1cf9416700d7877b308b2f9051b33cd028dd11d Template:Main 10 50 61 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|main}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Main_article --></noinclude> de20b6a379396a3458f12d72e486fce07869137c Template:See also 10 51 62 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|seeAlso}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> e245d8ecb350a8965723151f4fad9d3cafedad60 Template:About 10 52 63 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|about}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:About --></noinclude> 510109cae7f705952c7a0279d73a7a44fa82d41f Template:For 10 53 64 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|For}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> 6caebf265784c02a3dba04fe77eb5c5afb52fbd4 Template:Further 10 54 65 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|further}}</includeonly> <noinclude>{{Documentation|:Template:Hatnote/doc}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Hatnote --></noinclude> 2b274c2a078defdd0995162869db05d3fc772067 Template:Hatnote 10 55 66 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>{{Documentation}}</noinclude> 47651229f8ca41785babe25d56cdae7ac03ad9e1 Template:Delete 10 56 67 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{MessageBox |header = Candidate for deletion |type = delete |text = This page has been nominated for removal from the wiki. |comment = Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deletion. |class = notice hidden plainlinks |id = delete }}<includeonly>[[Category:Candidates for deletion]]</includeonly><noinclude> {{Documentation}}</noinclude> 4173b2533a1aa36de4f2777956f1eae8889808ba Template:Quote 10 57 68 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki {{#invoke:Quote|quote}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://starter.fandom.com/wiki/Template:Quote?oldid=4277 --></noinclude> bf6ed2ef0e8d676125dfd9d9b8b8ad72a18049e3 Template:Disambiguation 10 58 69 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{MessageBox | header = Disambiguation page for {{PAGENAME}} | type = disambiguation | text = The following is a list of links to pages that might share the same title. | comment = Please follow one of the disambiguation links below or [[Special:Search|search]] to find the page you were looking for if it is not listed. If an [[Special:Whatlinkshere/{{FULLPAGENAME}}|internal link]] led you here, you may wish to change the link to point directly to the intended article. | class = notice hidden | id = disambiguation}} <includeonly>__DISAMBIG__[[Category:Disambiguations]]</includeonly><noinclude> {{documentation}}</noinclude> 16605ae9114395add2e702cee409d0bd2deb7603 Template:MessageBox 10 59 70 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki {{#invoke:Mbox|main}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Ambox --></noinclude> fab8a2df56fd74147e1709af14e8993cfab7ebe7 Template:Dialogue 10 60 71 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki <includeonly><blockquote data-format="dialogue">{{#invoke:Dialogue|main}}</blockquote></includeonly><noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Dialogue --></noinclude> 400ad4d61c7eff1f67db8a2116441090d803cb3d Template:Namespace 10 61 72 2022-03-29T00:54:59Z FANDOM 4 1 revision imported wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>{{Documentation}}<!-- For a more traditional wikitext version of this template, see https://templates.fandom.com/wiki/Template:Namespace_detect --></noinclude> f5b6ed2c0363fd704c716a6e5420a5cc0546392f Template:Hatnote/doc 10 62 73 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki The hatnotes used for adding links between articles where more context is important. Broadly speaking, a hatnote should answer a readers' question: Am I on the right page? == Usage == ; Basic usage: &#123;{hatnote|''text''}} ; All parameters: &#123;{hatnote|''text''|extraclasses=''extra classes''|selfref=''yes''|category=''no''}} == Parameters == This template accepts the following parameters: * <code>1</code> - the hatnote text (required) * <code>extraclasses</code> - any extra CSS classes to be added. * <code>selfref</code> - If set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references. * <code>category</code> - If set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This has an effect only if the leftmost parameter (the hatnote text) is omitted. == Example == * <code><nowiki>{{hatnote|Example hatnote text}}</nowiki></code> → {{hatnote|Example hatnote text}} == Typical types == {{T|Main}}, {{T|Further}} are very similar, but indicate either the primary page for a topic or more detailed related topic. They have a nearly identical set of parameters. ;{{T|Main}}: When an article is large, it often has a summary and a link to a main article. This template is used after the heading of the summary, to indicate a link to the subtopic article that has been summarized. ;{{T|Further}}: Used to link to articles containing further information on this topic. ;{{T|See also}}: Used to link to additional articles on related topics. :;{{T|Main|Main Page}} →:{{Main|Main Page}} :;{{T|Main|Main Page|Main Page}} →:{{Main|Main Page|Main Page}} :*<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the namespace prefix). Categories and files are automatically escaped with the [[w:Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''. :*<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>. :*<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references. == Disambiguation == Templates such as {{T|About}} and {{T|For}} are to be used in cases where a disambiguation is not needed. In general, disambiguation pages should only be used for 4 or more titles that are mostly or entirely identical, except for a qualifier. ;{{T|About}}: Links the reader to other articles with similar titles or concepts that they may have been seeking instead. The template has several formats, including: :;{{T|About|Use1}} →:{{About|}} :;{{T|About|Use1|<nowiki/>|Main Page}} →:{{About|Use1||Main Page}} :;{{T|About|Use1|<nowiki/>|Main Page|and|Main Page}} →:{{About|Use1||Main Page|and|Main Page}} :;{{T|About|Use1|Use2|Main Page}} →:{{About|Use1|Use2|Main Page}} :;{{T|About|Use1|Use2|Main Page|and|Main Page}} →:{{About|Use1|Use2|Main Page|and|Main Page}} :;{{T|About|Use1|Use2|Main Page|other uses}} →:{{About|Use1|Use2|Main Page|other uses}} Alternately, a <code>section=yes</code> parameter can be added to the {{T|About}} template for use at the top of a section. When using this parameter, the wording in the template changes to specify that it is being used in a section: :;{{T|About|Use1|<nowiki>section=yes</nowiki>}} →:{{About|Use1|section=yes}} :;{{T|About|Use1|<nowiki/>|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1||Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|and|Main Page|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|and|Main Page|section=yes}} :;{{T|About|Use1|Use2|Main Page|other uses|<nowiki>section=yes</nowiki>}} →:{{About|Use1|Use2|Main Page|other uses|section=yes}} A <var>text</var> option adds text to the end; note that this should be only used when truly necessary, and the other hatnote templates listed below don't suffice. This template also supports <var>selfref</var>. ;{{T|For}}: Provides links to up to four articles or disambiguation pages. It accepts zero to five parameters. :;If used without parameters on a page named ''Foo'', the result is ::{{hatnote|For other uses, see [[:Foo (disambiguation)]].}} :;The first parameter changes the hatnote itself and should be plain text, e.g. {{T|For|similar terms}} yields ::{{hatnote|For similar terms, see [[:Foo (disambiguation)]].}} :;The second parameter is used to change the resultant link, e.g. {{T|For|similar terms|Main Page}} yields ::{{For|similar terms|Main Page}} :;The third, fourth and fifth parameters are used to give one, two, or three supplementary links: :*{{For|similar terms|Main Page|Main Page}} :*{{For|similar terms|Main Page|Main Page|Main Page}} :*{{For|similar terms|Main Page|Main Page|Main Page|Main Page}} :the last being produced by e.g. {{T|For|similar terms|Main Page|Main Page|Main Page|Main Page}}. == Errors == If no hatnote text is supplied, the template will output the following message: * {{hatnote|category=no}} If you see this error message, it is for one of four reasons: # No parameters were specified (the template code was <code><nowiki>{{hatnote}}</nowiki></code>). Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead. # Some parameters were specified, but the hatnote text wasn't included. For example, the template text <code><nowiki>{{hatnote|extraclasses=seealso}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>|extraclasses=seealso}}</nowiki></code> instead. # The hatnote text was specified, but that text contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{hatnote|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code> before the hatnote text, like this: <code><nowiki>{{hatnote|1=2+2=4}}</nowiki></code>. # You tried to access [[Module:Hatnote]] directly by using <code><nowiki>{{#invoke:hatnote|hatnote|</nowiki>''text''<nowiki>}}</nowiki></code>. Use of #invoke in this way has been disabled for performance reasons. Please use <code><nowiki>{{hatnote|</nowiki>''text''<nowiki>}}</nowiki></code> instead. Pages that contain this error message are tracked in [[:Category:Hatnote templates with errors]]. == Technical details == This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Hatnote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Hatnote|Hatnote on Templates Wiki]]'''. The HTML code produced by this template looks like this: * <code><nowiki><div role="note" class="hatnote"></nowiki>''hatnote text''<nowiki></div></nowiki></code> <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f89b62bda227691a45fd6d42d8bf89b151436cd2 Template:Delete/doc 10 63 74 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to mark pages for deletion, categorizing them in [[:Category:Candidates for deletion]]. ;Syntax :Type <code>{{t|delete}}</code> on the page to be deleted.''' <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> baa263e149fb470c182f0de3af57178739e61a86 Template:Quote/doc 10 64 75 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ==Description== To use this template, enter the following and fill in the appropriate fields. Most fields left blank will not show up. ==Syntax== <pre> {{Quote | quote = | speaker = | source = }} </pre> As an alternative, these can be placed in positional order. ==Samples== {{Quote | quote = When you play the game of thrones, you win or you die. | speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} <pre> {{Quote | quote = When you play the game of thrones, you win or you die. | speaker = [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | source = [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} </pre> or <pre> {{Quote | When you play the game of thrones, you win or you die. | [[w:c:gameofthrones:Cersei Lannister|Cersei Lannister]] | [[w:c:gameofthrones:You Win or You Die|"You Win or You Die"]] }} </pre> == Technical details == This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Quote|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Quote|Quote on Templates Wiki]]'''. <includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 9257007bdd810476e8723e435841c3f133a204f2 Template:Disambiguation/doc 10 65 76 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :Marks an article as a disambiguation page, adding a banner to the article and categorizing it under [[:Category:Disambiguations]]. ;Syntax :Add <code>{{t|disambiguation}}</code> at the top of a disambiguation page. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> c0a52d0ac40d9827b4462625985906e37c6f83c9 Template:MessageBox/doc 10 66 77 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{T|MessageBox}} is a template for creating message boxes. It is highly customizable with classes, inline styles, and provided CSS selectors. Optional features such as an image, left border, right-side text (for e.g. shortcuts), and a dismiss function. It uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Mbox|on the Global Lua Module page]]. This version is modified to produce a starter style, based on the [[w:c:dev:mediawiki:Global Lua Modules/Mbox.css|basic style from the module]]. To use the full capabilities of this module and remove the default styling, remove the indicated portions of [[Module:Mbox]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Ambox|Ambox on Templates Wiki]]'''. ==Parameters== For examples of how to use these parameters, see [[#Examples]]. {| class="wikitable" style="width: 100%" ! Parameter name ! Description ! Required? ! Default |- | <code>class</code> | Additional classes to the root <code>.mbox</code> element. | No | — |- | <code>bordercolor</code> | The color of the thick left-most border. | No | Stylesheet default |- | <code>type</code> | Type of mbox as declared as in CSS with variables. Affects color of the thick left-most border. See [[#Using types]]. | No | — |- | <code>bgcolor</code> | The color of the mbox's background. | No | Stylesheet default |- | <code>style</code> | Additional inline styles to the root <code>.mbox</code> element. | No | — |- | <code>image</code> | An image to be added to the left of all text content. | No | — |- | <code>imagewidth</code> | The width of the image (height automatically adjusts). | No | <code>60px</code> |- | <code>imagelink</code> | The link to which the image points (could link to the relevant maintenance category, per example). If not included, the image will be un-clickable. | No | — |- | <code>header</code> | The header (bold text placed at the top). This is typically used to very briefly explain the subject of the mbox itself, as when the mbox is closed, only the header will show. | No | — |- | <code>text</code> | Non-bold text placed below the header, typically used to explain the subject of the mbox in further or additional detail. When the mbox is closed, this text will be hidden. | No | — |- | <code>comment</code> | Smaller non-bold text placed below the main text, typically used to add additional links or context about the notice. When the mbox is closed, this text will be hidden. | No | — |- | <code>aside</code> | Text placed within a small allocation on the right side separated by a light gray border. Most commonly used to show shortcuts to the page in question (such as on policy pages). When the mbox is closed, this text will be hidden. | No | — |- | <code>id</code> | By default, one close button will close all mboxes on the page. However, to change this, this parameter may be used, given as the name of the mbox implementation (e.g., "Template:Cleanup" would have <code><nowiki>|id=cleanup</nowiki></code>). | No | — |- | <code>collapsed</code> | By default, the mbox will be uncollapsed, and the full contents will be shown. However, to change this, this parameter may be used to set an mbox as collapsed by default (e.g., <code><nowiki>|collapsed=true</nowiki></code> would set the mbox to be collapsed by default). | No | — |} ==Design== Some communities may wish to customize the appearance of the mboxes. The most common styling options are provided illustrated in CSS. <syntaxhighlight lang="css" class="mw-collapsible mw-collapsed"> .mbox { /* the background of the entire box */; background-color: ; /* the border color of the entire box */ border-color: ; /* the border thickness of the entire box */ border-width: ; /* the default thick left border color; note this can be changed from within the template implementations using the "color" parameter */ border-left-color: ; /* the rounded-ness of the corners */; border-radius: ; /* the baseline font-size of the mbox */ font-size: ; } .mbox__content { /* the padding inside the mbox */ padding: ; } .mbox__content__image { /* the minimum width of the mbox's image (if bigger, use the "imagewidth" parameter in the template) */ width: ; /* the spacing to the left of the text (i.e., the right of the image) */ padding-right: ; } .mbox__content__text__comment { /* the size of the text in the "comment" parameter */ font-size: ; } .mbox__content__aside { /* any particular modifications to the "aside" area can go here */ /* the maximum width of the aside area */ width: ; } .mbox__close { /* the appearance of the close symbol here */ } .mbox__close:after { /* overwrite "content" here if you do not wish for the close symbol to be × */ content: ''; } .mw-collapsed + .mbox__close { /* modifications to the close symbol when the box is closed */ } .mw-collapsed + .mbox__close:after { /* overwrite "content" here if you do not wish for the close symbol to be + when the box is closed */ content: ''; } </syntaxhighlight> ; Technical notes * Additional inline styles to the root <code>.mbox</code> element can be achieved via the <code>style</code> parameter in the template. == Examples == === Basic MessageBox === <pre> {{MessageBox |header = Header text here |text = Normal text here |id = test1 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |text = Normal text here |id = test1 }} === Using types === To use types, CSS variables must be added, such as: <syntaxhighlight lang="css"> :root { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); } </syntaxhighlight> If added: <pre> {{MessageBox |header = Header text here |type = important |text = Normal text here |id = test2 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |type = important |text = Normal text here |id = test2 }} Depending on your styling, there may not be a visual difference in the above example. === With an image === <pre> {{MessageBox |header = Header text here |text = Normal text here |image = Wiki.png |imagelink = |imagewidth = 50px |id = test3 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |text = Normal text here |image = Wiki.png |imagelink = |imagewidth = 50px |id = test3 }} === With an aside === <pre> {{MessageBox |header = Header text here |type = important |text = Normal text here |aside = Aside text here |id = test4 }}</pre> Produces: {{#invoke:Mbox|main |header = Header text here |type = important |text = Normal text here |aside = Aside text here |id = test4 }} === Standard/default style === <pre> {{MessageBox |header = Header text here |text = Normal text here |comment = Comment text here |image = Wiki.png |aside = Aside text here |id = standard }}</pre> Produces: {{#invoke:Mbox|main|header=Header text here |text=Normal text here |comment=Comment text here |image=Wiki.png |aside=Aside text here |id=standard}} <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ca7c12cf4c7d97a6a3a96c5adc07ee3ceaf78fda Template:Dialogue/doc 10 67 78 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki {{t|Dialogue}} facilitates the writing of dialogue in a standard format. The template can handle most standard formats of writing dialogue, and can be indented, bulleted or numbered. '''This template ''cannot'' be <code>subst:</code>'d'''. This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Dialogue|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Dialogue/wikitext|Dialogue on Templates Wiki]]'''. ==Syntax== This is how to write the template in [[w:Help:wikitext|wikitext]] onto your article: <pre>{{dialogue |short=full |short=full |short=full ... |Character|Speech |Character|Speech |Character|Speech ... |cite = dialogue description }}</pre> These parameters are explained more fully below. ==Parameters== '''Named parameters specify name shortcuts. They are all optional.''' They are placed at the top of the template call, like this: <pre>{{dialogue |short=full |short=full |short=full ...</pre> Name shortcuts apply to your main dialogue text. If you use a shortcut specified here for a character name, then the full name will be replaced for it. Named parameters of the form "<code>mood1</code>", "<code>mood2</code>", "<code>mood3</code>", etc., up to "<code>mood10</code>", specify moods for the corresponding line number (e.g. "<code>mood1</code>" specifies line 1). They are placed in a line like this: <pre>... |Character|Speech|mood1=angry |Character|Speech|mood2=quiet |Character|Speech|mood3=ecstatic ...</pre> Positional parameters form the text of the dialogue (i.e. any line not containing an "<code>=</code>" will be construed as part of the dialogue. :;<code>Parameter 1</code> ''(required)'' : Character name speaking :;<code>Parameter 2</code> ''(optional)'' : Line to speak :;<code>Parameter 3</code> ''(optional)'' : Next character :;<code>Parameter 4</code> ''(optional)'' : Next line :;<code>Parameter 5</code> ''(optional)'' : Next character :;<code>Parameter 6</code> ''(optional)'' : Next line :;<code>Parameter 7</code> ''(optional)'' : so on... Note: if any character is called "<code>action</code>" then that line will be construed as an action line. It still counts as a ''line'' nonetheless. To write a dialogue description/source, use <code>cite =</code> ==Examples== Here is an example of a full template usage: <pre>{{dialogue |harry=Harry Enfield |bryan=Bryan Adams |harry|Hello! |mood1=happy |bryan|Oh hello there |mood2=surprised |harry|How are you? |mood3=inquisitive |bryan|Quite fine thank you. |mood4=reserved |harry|Oh that's spiffing. |mood5=spiffed |bryan|It is, isn't it?! |mood6=multo-spiffed |harry|Quite so. |mood7=bored |bryan|Well, I'm off! |mood8=joyous |harry|Ta-ta! |mood9=relieved |bryan|Au revoir! |mood10=sarcastic }}</pre> The above would generate: {{dialogue |harry=Harry Enfield |bryan=Bryan Adams |harry|Hello! |mood1=happy |bryan|Oh hello there |mood2=surprised |harry|How are you? |mood3=inquisitive |bryan|Quite fine thank you. |mood4=reserved |harry|Oh that's spiffing. |mood5=spiffed |bryan|It is, isn't it?! |mood6=multo-spiffed |harry|Quite so. |mood7=bored |bryan|Well, I'm off! |mood8=joyous |harry|Ta-ta! |mood9=relieved |bryan|Au revoir! |mood10=sarcastic }} The below code demonstrates examples of extended use: <pre>{{dialogue |george=Georgie Boy |rachel=Rachel |action|Enter: George and Rachel |george|Good morrow dearest Rachel!|mood2=happy |action|Rachel turns to see him |rachel|Oh, George, it's you! |george|... |rachel|Why won't you say anything?!|mood6=worried |action|Enter: Guards |Guards|We are announcing George's arrest! |rachel|Oh my!|mood9=horrified |action|George is dragged away. }}</pre> The above would generate: {{dialogue |george=Georgie Boy |rachel=Rachel |action|Enter: George and Rachel |george|Good morrow dearest Rachel!|mood2=happy |action|Rachel turns to see him |rachel|Oh, George, it's you! |george|... |rachel|Why won't you say anything?!|mood6=worried |action|Enter: Guards |Guards|We are announcing George's arrest! |rachel|Oh my!|mood9=horrified |action|George is dragged away. }} ===Notes=== You can number, bullet or indent your dialogue: <pre>:{{dialogue|Me|Hello|You|Howdido!}}</pre> :{{dialogue|Me|Hello|You|Howdido!}} <pre>#{{dialogue|Me|Hello|You|Howdido!}} #{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}}</pre> #{{dialogue|Me|Hello|You|Howdido!}} #{{dialogue|Them|Good afternoon|Us|What a load of rubbish!}} <pre>*{{dialogue |angel=Fortitude |angel|I am an angel!|Crowd|We don't believe you!}} *{{dialogue |angel=Fortitude |angel|But I'm being quite serious!|Crowd|Too bad for you then!}}</pre> *{{dialogue |angel=Fortitude |angel|I am an angel!|Crowd|We don't believe you!}} *{{dialogue |angel=Fortitude |angel|But I'm being quite serious!|Crowd|Too bad for you then!}} You will get the odd spacing error (e.g. "Speech<code><nowiki><space></nowiki></code>") if you lay out your dialogue on multiple lines. <includeonly>[[Category:Quote templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 56b3a94f307db52b25c728122e451a63e806c791 Template:Namespace/doc 10 68 79 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki This is the {{t|Namespace}} meta-template. It helps other templates detect what type of page they are on. It detects and groups all the different [[Wikipedia:Namespace#Enumeration|namespaces]] used on Fandom into several types: ; main : Main (i.e. article) space, where normal articles are kept. ; talk : Any talk space, including page names that start with "Talk:", "User talk:", "File talk:", etc. ;user ;file ;mediawiki ;template ;help ;category : The remaining namespaces. ; other : Any namespaces that were not specified as a parameter to the template (see explanation below). For backwards compatibility, this template handles '''image''' as if '''file'''. '''image''' (<nowiki>[[Image:...]]</nowiki>) is now deprecated. '''Note:''' For most cases it may be better to use the simpler namespace detection templates (see the [[#See also|see also]] section below). This template is more prone to human errors such as misspelling parameter names. This template uses the [[w:Help:Lua|Lua templating language]], and more information can be found [[w:c:dev:Global_Lua_Modules/Namespace_detect|on the Global Lua Module page]]. '''For a traditional wikitext version of this template, see [[w:c:templates:Template:Namespace_detect|Namespace_detect on Templates Wiki]]'''. == Usage == This template takes one or more parameters named after the different page types as listed above. Like this: <pre> {{Namespace | main = Article text | talk = Talk page text | other = Other pages text }} </pre> If the template is on a main (article) page, it will return this: : {{Namespace |demospace=main | main = Article text | talk = Talk page text | other = Other pages text }} If the template is on any other page than an article or a talk page, it will return this: : {{Namespace | main = Article text | talk = Talk page text | other = Other pages text }} The example above made the template return something for all page types. But if we don't use the '''other''' parameter or leave it empty, it will not return anything for the other page types. Like this: <pre> {{Namespace | file = File page text | category = Category page text | other = }} </pre> On any pages other than file and category pages the code above will render nothing. <!-- Do not remove this one. It is supposed to render nothing, but we have it here for testing purposes. --> : {{Namespace | file = File page text | category = Category page text | other = }} By using an empty parameter, you can make it so the template doesn't render anything for some specific page type. Like this: <pre> {{Namespace | main = | other = Other pages text }} </pre> The code above will render nothing when on mainspace (article) pages, but will return this when on other pages: : {{Namespace | main = | other = Other pages text }} == Demospace and page == For testing and demonstration purposes, this template can take two parameters named '''demospace''' and '''page'''. '''demospace''' understands any of the page type names used by this template, including the '''other''' type. It tells the template to behave like it is on some specific type of page. Like this: <pre> {{Namespace | main = Article text | other = Other pages text | demospace = main }} </pre> No matter on what kind of page the code above is used, it will return this: : {{Namespace | main = Article text | other = Other pages text | demospace = main }} The '''page''' parameter instead takes a normal pagename, making this template behave exactly as if on that page. The pagename doesn't have to be an existing page. Like this: <pre> {{Namespace | user = User page text | other = Other pages text | page = User:Example }} </pre> No matter on what kind of page the code above is used, it will return this: : {{Namespace | user = User page text | other = Other pages text | page = User:Example }} It can be convenient to let your template understand the '''demospace''' and/or '''page''' parameter and send it on to the {{T|Namespace}} template. Like this: <pre> {{Namespace | main = Article text | other = Other pages text | demospace = {{{demospace|}}} | page = {{{page|}}} }} </pre> If both the '''demospace''' and '''page''' parameters are empty or undefined, the template will detect page types as usual. == Parameters == List of all parameters: <pre> {{Namespace | main = ... | other = | demospace = {{{demospace|}}} / main / talk / user / file / mediawiki / template / help / category / other | page = {{{page|}}} / User:Example }} </pre> == Technical details == If you intend to feed tables as content to the numbered parameters of this template, you need to know this: [[w:Help:Template|Templates]] have a problem handling parameter data that contains pipes "<code>|</code>" unless the pipe is inside another template <code><nowiki>{{name|param1}}</nowiki></code> or inside a piped link <code><nowiki>[[w:Help:Template|help]]</nowiki></code>. Thus templates can not handle [[w:Help:Table|wikitables]] as input unless you escape them by using the <code><nowiki>{{!}}</nowiki></code> [[w:Help:Magic words|magic word]]. This makes it hard to use wikitables as parameters to templates. Instead, the usual solution is to use HTML wikimarkup for the table code, which is more robust. <includeonly>[[Category:General wiki templates]]{{#ifeq:{{SUBPAGENAME}}|sandbox|[[Category:Namespace manipulation templates]]}}</includeonly><noinclude>[[Category:Template documentation]]</noinclude> abd1a20286343a0c76ff9c575682bd5d011f5a6d Module:Dialogue 828 69 80 2022-03-29T00:54:59Z FANDOM 4 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Dialogue module from the [[w:c:dev:Global Lua Modules]]. local Dialogue = require('Dev:Dialogue') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Dialogue]] -- The last line produces the output for the template return Dialogue a147d7d4d5837eeb0910d21be2904bbae6658ad2 Module:Hatnote 828 70 81 2022-03-29T00:54:59Z FANDOM 4 Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Hatnote module from the [[w:c:dev:Global Lua Modules]]. local H = require('Dev:Hatnote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Hatnote]] -- The last line produces the output for the template return H d52966e186d4771ee7844be7f402467c51644349 Module:Mbox 828 71 82 2022-03-29T00:54:59Z FANDOM 4 Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Mbox module from the [[w:c:dev:Global Lua Modules]]. local Mbox = require('Dev:Mbox') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Mbox]] -- The imported Module is overwritten locally to include default styling. -- For a more flexible Mbox experience, delete the function below and import -- https://dev.fandom.com/wiki/MediaWiki:Global_Lua_Modules/Mbox.css -- or paste (and modify as you like) its contents in your wiki's -- [[MediaWiki:Wikia.css]] (see [[w:Help:Including_additional_CSS_and_JS]]) -- or look at https://dev.fandom.com/wiki/Global_Lua_Modules/Mbox -- for more customization inspiration -- -- BEGIN DELETION HERE -- local getArgs = require('Dev:Arguments').getArgs local localCSS = mw.loadData('Module:Mbox/data').localStyle function Mbox.main(frame) local args = getArgs(frame) -- styles local styles = {} if args.bordercolor then styles['border-left-color'] = args.bordercolor elseif args.type then styles['border-left-color'] = 'var(--type-' .. args.type .. ')' end if args.bgcolor then styles['background-color'] = args.bgcolor end -- images local image = args.image or '' local imagewidth = args.imagewidth or '80px' local imagelink = '' if args.imagelink then imagelink = '|link=' .. args.imagelink end local imagewikitext = ('%sFile:%s|%s%s' .. ']]'):format('[[', image, imagewidth, imagelink) -- id for closure local id = args.id or 'mbox' local container = mw.html.create('div') :addClass('mbox') :addClass(args.class) :css(styles) :css(localCSS['mbox']) :cssText(args.style) local content = container:tag('div') :addClass('mbox__content') :css(localCSS['mbox__content']) if args.image then local image = content:tag('div') :addClass('mbox__content__image') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__image']) :wikitext(imagewikitext) if args.collapsed then image:addClass('mw-collapsed') end end local contentwrapper = content:tag('div') :addClass('mbox__content__wrapper') :css(localCSS['mbox__content__wrapper']) if args.header then contentwrapper:tag('div') :addClass('mbox__content__header') :css(localCSS['mbox__content__header']) :wikitext(args.header) end if args.text then local text = contentwrapper:tag('div') :addClass('mbox__content__text') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__text']) :wikitext(args.text) if args.collapsed then text:addClass('mw-collapsed') end if args.comment then text:tag('div') :addClass('mbox__content__text__comment') :css(localCSS['mbox__content__text__comment']) :wikitext(args.comment) end end contentwrapper:tag('span') :addClass('mbox__close') :addClass('mw-customtoggle-' .. id) :css(localCSS['mbox__close']) :attr('title', 'Dismiss') if args.aside then local aside = content:tag('div') :addClass('mbox__content__aside') :addClass('mw-collapsible') :attr('id', 'mw-customcollapsible-' .. id) :css(localCSS['mbox__content__aside']) :wikitext(args.aside) if args.collapsed then aside:addClass('mw-collapsed') end end return container end -- -- END DELETION HERE -- -- The last line produces the output for the template return Mbox 1c196d668f9209faef3e9a78c1f082f1c8573042 Module:Mbox/data 828 72 83 2022-03-29T00:54:59Z FANDOM 4 Scribunto text/plain local localStyle = { ['mbox'] = { ['display'] = 'flex', ['position'] = 'relative', ['border'] = '1px solid #d6d6d6', ['border-left-width'] = '8px', ['border-left-color'] = '#d6d6d6', ['border-radius'] = '3px', ['margin-bottom'] = '5px', ['min-height'] = '32px' }, ['mbox__content'] = { ['display'] = 'table', ['box-sizing'] = 'border-box', ['width'] = '100%', ['padding'] = '8px 15px' }, ['mbox__content__image'] = { ['display'] = 'table-cell', ['width'] = '40px', ['height'] = '100%', ['text-align'] = 'center', ['vertical-align'] = 'middle', ['padding-right'] = '15px' }, ['mbox__content__wrapper'] = { ['display'] = 'table-cell', ['vertical-align'] = 'middle' }, ['mbox__content__header'] = { ['display'] = 'block', ['font-weight'] = 'bold' }, ['mbox__content__text'] = { ['display'] = 'block' }, ['mbox__content__text__comment'] = { ['font-size'] = 'small' }, ['mbox__content__aside'] = { ['display'] = 'table-cell', ['width'] = '100px', ['vertical-align'] = 'middle', ['text-align'] = 'center', ['padding-left'] = '15px', ['border-left'] = '1px solid #d6d6d6' }, ['mbox__close'] = { ['position'] = 'absolute', ['right'] = '0', ['top'] = '0', ['padding'] = '2px 7px', ['font-weight'] = 'bold', ['font-size'] = '16px', ['color'] = '#bbb', ['cursor'] = 'pointer', ['transition'] = 'all .15s ease-in' } } return { localStyle = localStyle } 7afdc5979e3b8bc8d21b52929058ba24c351dbdc Module:Namespace detect 828 73 84 2022-03-29T00:54:59Z FANDOM 4 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Namespace_detect module from the [[w:c:dev:Global Lua Modules]]. local NS = require('Dev:Namespace_detect') -- Local configuration can be modified in -- [[Module:Namespace detect/data]] and -- [[Module:Namespace detect/config]] -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace detect]] -- The last line produces the output for the template return NS 108c1bd4f38e4a0b40b9a85178a4d68cd557cef3 Module:Namespace detect/config 828 74 85 2022-03-29T00:54:59Z FANDOM 4 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports from the [[w:c:dev:Global Lua Modules]]. local nsConfiguration = require('Dev:Namespace_detect/config') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] -- The imported Module is overwritten locally to include default configuration. -- For a more flexible experience, delete the page import -- and paste (and modify as you like) its contents into this page -- https://dev.fandom.com/wiki/Module:Namespace_detect/config -- The last line produces the output for the template return nsConfiguration 22ca76ef47387cf20b5fcc7d1f14687f0b2da915 Module:Namespace detect/data 828 75 86 2022-03-29T00:54:59Z FANDOM 4 fixing broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports from the [[w:c:dev:Global Lua Modules]]. local nsData = require('Dev:Namespace_detect/data') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Namespace_detect]] -- The imported Module is overwritten locally to include default configuration. -- For a more flexible experience, delete the page import -- and paste (and modify as you like) its contents into this page -- https://dev.fandom.com/wiki/Module:Namespace_detect/data -- The last line produces the output for the template return nsData 4056c252664c31f05a9d54c48fcd865cdf41dd9f Module:Navbox 828 76 87 2022-03-29T00:54:59Z FANDOM 4 fixed broken help link Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Navbox module from the [[w:c:dev:Global Lua Modules]]. local N = require('Dev:Navbox') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Navbox]] -- The last line produces the output for the template return N 7c5d05d6cc02dafdd64b46ca3fbdc3f808e53e5b Module:Quote 828 77 88 2022-03-29T00:54:59Z FANDOM 4 Scribunto text/plain -- This Module is used for making templates based in the Lua language. -- See more details about Lua in [[w:Help:Lua]]. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Quote module from the [[w:c:dev:Global Lua Modules]]. local Quote = require('Dev:Quote') -- See more details about this module at [[w:c:dev:Global_Lua_Modules/Quote]] -- The last line produces the output for the template return Quote 6918bf52f0c3bdbd83cc4611b6243a659e7d800b Category:Disambiguations 14 78 89 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:{{SITENAME}}]]" wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Quote templates 14 79 90 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Notice templates 14 80 91 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Templates]]" wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Candidates for deletion 14 81 92 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ This category contains articles that have been marked as candidates for deletion with the {{T|Delete}} template. '''Administrators, before deleting these pages''' make sure you check each page's discussion page, what links to each page, and the history of each page before proceeding with the deletion. [[Category:Maintenance]] a73d7b53cf0697a0682f842f1a71aafbe127aade Template:= 10 82 93 2022-03-29T00:54:59Z FANDOM 4 Created page with "<includeonly>=</includeonly><noinclude> {{documentation}}<noinclude>" wikitext text/x-wiki <includeonly>=</includeonly><noinclude> {{documentation}}<noinclude> 8f9d55b93874a691b84a9b6acb54bc6dd01fbf39 Template:=/doc 10 83 94 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used when escaping <code>=</code> when contained in [[w:Help:Parser functions|Parser functions]]. ;This template cannot be substituted. ;Syntax :Insert this template using <code>{{t|{{=}}}}</code> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> ce8f267527b35c852e8190c38416584783aa37ac Template:Clear 10 84 95 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude> {{documentation}}</noinclude> 02f4c0e17d50c41f902cad74e6d937f585ba4719 Template:Cols 10 85 96 2022-03-29T00:54:59Z FANDOM 4 Modern and supported browsers no longer need vendor-specific prefixes for column-count wikitext text/x-wiki <includeonly><div style="column-count: {{{1}}};">{{{2}}}</div></includeonly><noinclude> {{documentation}}</noinclude> 7e455c29d8571535f2a7692bcd711e2d0547441c Template:Space 10 86 97 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly>&#32;</includeonly><noinclude> {{documentation}}</noinclude> e1c3d6d869303e7cc9d8a997c69b01995b7e4928 Template:Tocright 10 87 98 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><div style="float:right; clear:{{{clear|right}}}; margin-bottom:.5em; padding:.5em 0 .8em 1.4em; background:transparent; max-width:20em;">__TOC__</div></includeonly><noinclude> {{documentation}}</noinclude> e05836955bb88801d044130d69154745f45c7642 Template:Trim 10 88 99 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{{1}}}|}}</includeonly><noinclude> {{documentation}}</noinclude> 21c7177ac37ea769b22ca26a2493df055a56f87a Template:Cols/doc 10 89 100 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description This template formats the text into the specified number of columns. ;Syntax <pre>{{cols|<# of columns>|<content>}}</pre> Especially useful to wrap long lists of items into multiple columns. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 763fc74c9235663a500bcc69a50d425c77c16cb0 Template:Space/doc 10 90 101 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description This template allows you to force a space in areas that strip whitespace. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> e361d3f5c2ca3c7d7503d9bb0d311e9d440c3cc2 Template:Tocright/doc 10 91 102 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description {{t|tocright}} forces the auto-generated Table of Contents for an article to appear floated to the right side of the page, in order to improve article layout. <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 1449f71ce473315e9f2ad72064ee5c76ed00c89d Template:Trim/doc 10 92 103 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description This template trims whitespace from the beginning and end of the supplied value. It works by using the simple hack of filtering it through the <code>#if</code> parser function. ;Syntax <nowiki>{{trim| value }}</nowiki> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f1f126e3f6fe8474d693ec499d71a9c4067043f9 Template:Clear/doc 10 93 104 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description This template allows you to clear the left side, right side, or both sides of the page. Clearing means that the content following the template will not be displayed until the existing content on the specified sides (for example, "hanging" or floating images or blocks) is displayed completely. This template is often used so that the text does not flow around unrelated images. The template adds the following code to the page: <code><nowiki><div style="clear:left/right/both;"></div></nowiki></code> (the value after <code>clear</code> depends on the parameters). This code affects elements with the CSS property <code>float</code>, including files floated to the side (for example, <code><nowiki>[[File:Image.png|right]]</nowiki></code>). ;Syntax * To clear both sides of the page, add the code {{t|Clear}}. * To clear only the left side of the page, add the code {{t|Clear|left}}. * To clear only the right side of the page, add the code {{t|Clear|right}}. You can also use {{t|-}} instead of {{t|Clear}} as a shorthand call for this template. __NOTOC__ ;Example <pre style="display:table"> === Section 1 === [[File:Example.jpg|200px|right]] Section 1 text. === Section 2 === Section 2 text. {{Clear|right}} === Section 3 === Section 3 text. </pre> This code produces the following result: ---- === Section 1 === [[File:Example.jpg|200px|right]] Section 1 text. === Section 2 === Section 2 text. {{Clear|right}} === Section 3 === Section 3 text. ---- As you can see above, the example image added in section 1 is displayed to the right and extends down through section 2, while the {{t|Clear}} template is called at the end of the second section, resulting in the example image not being next to section 3. Thus, one use of the {{t|Clear}} template is to control which elements are displayed next to which other elements. == See also == * [https://developer.mozilla.org/en-US/docs/Web/CSS/clear CSS property <code>clear</code> on MDN] * [https://developer.mozilla.org/en-US/docs/Web/CSS/float CSS property <code>float</code> on MDN] <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 23cbf4a368710af74b5a7e729c6a7205939cd5de File:Example.jpg 6 94 105 2022-03-29T00:54:59Z FANDOM 4 {{PD}} [[Category:Images]] wikitext text/x-wiki == Summary == {{PD}} [[Category:Images]] b45ad4275ad2f01c536d8fee443ea7264309586b Category:Images 14 95 106 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Media]]" wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Media 14 96 107 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:{{SITENAME}}]]" wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Template:Game 10 97 108 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="developer"><label>Developer</label></data> <data source="publisher"><label>Publisher</label></data> <data source="engine"><label>Engine</label></data> <data source="version"><label>Version</label></data> <data source="platform"><label>Platform</label></data> <data source="releasedate"><label>Release date</label></data> <data source="genre"><label>Genre</label></data> <data source="mode"><label>Mode</label></data> <data source="rating"><label>Rating</label></data> <data source="media"><label>Media</label></data> <group collapse="open"> <header>System requirements</header> <data source="requirements"></data> </group> </infobox></includeonly><noinclude>{{Documentation}}</noinclude> 632ebe6f3e8bab75f012f57996157e6b71f04c2c Template:Game/doc 10 98 109 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre>{{Game | title = The game's name, displayed on top of the infobox | image = [e.g. "Example.jpg"] | developer = | publisher = | engine = The engine the game runs on | version = Most recently released version of the game. If your wiki does patch notes, you may wish to link to those. | platform = Platform(s) the game is available on | releasedate = When the game released | genre = Genre(s) the game is classified as | mode = Singeplayer, multiplayer, etc. | rating = ESRB / PEGI, etc. ratings | media = What media the game is available on (digital, cartridge, cd, etc.) | requirements = System requirements }}</pre> == Sample output == {{Game | title = The Game of Flower | image = Example.jpg | developer = | publisher = | engine = | version = | platform = PC | releasedate = Soon | genre = RPG | mode = Single player | rating = | media = | requirements = Cutting edge hardware }} <pre>{{Game | title = The Game of Flower | image = Example.jpg | developer = | publisher = | engine = | version = | platform = PC | releasedate = Soon | genre = RPG | mode = Single player | rating = | media = | requirements = Cutting edge hardware }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f43ae1af35184ba75281f54d6c3683a202f5fd69 Template:LicenseBox 10 99 110 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><div style="border-collapse: collapse; border-color: #d6d6d6; border-radius: 3px; border-style: solid; border-left-width: 8px; border-bottom-width: 1px; border-right-width: 1px; border-top-width: 1px; display: flex; margin: 0 auto 5px auto; min-height: 32px; padding: 0.25em 0.5em; {{{style|}}}" class="article-table plainlinks {{{class|}}}"> {{#if:{{{image|}}} | <span style="padding: 2px 0px 2px 0.5em; text-align: center; width: 60px;">[[File:{{{image}}}{{!}}48px{!}}alt{{=}}]]</span>}} {{{text|''Your license text is not specified''}}} </div></includeonly><noinclude> {{documentation}}</noinclude> 069ed63c4b14e0275262b6d3e8d9e91ecba49744 Template:LicenseBox/doc 10 100 111 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki ;Description :This template is used to create the box used by the various image license templates. The default styling is currently geared to a light-themed wiki. If your wiki has a dark theme and this template is too bright relative to the other elements on your wiki, simply change the following style parameters: :<code>background-color:</code> This is the color of the background and is currently set to: <code>#fefefe</code> :<code>border-color:</code> This is the color of the borders and is currently set to: <code>#d6d6d6</code> :<code>color:</code> This is the color of the text and is currently set to: <code>#333</code> ;Syntax :Type <code>{{t|LicenseBox|text{{=}}License text}}</code> on the image information page. <includeonly>[[Category:Image license templates| ]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 9ec2738036e3818826b937975731274577856c0d Template:- 10 101 112 2022-03-29T00:54:59Z FANDOM 4 Redirected page to [[Template:Clear]] wikitext text/x-wiki #REDIRECT [[Template:Clear]] 1a2aa4a9ba7478e54a2b21cbce68887ea297ea86 Template:Stub 10 102 113 2022-03-29T00:54:59Z FANDOM 4 Created page with "{{MessageBox |header = Stub |type = stub |text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}}..." wikitext text/x-wiki {{MessageBox |header = Stub |type = stub |text = ''This article is a [[:Category:Stubs|stub]]. You can help {{SITENAME}} by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].'' |comment = |class = notice hidden plainlinks |id = stub }}<includeonly>[[Category:Stubs]]</includeonly><noinclude> {{Documentation}}</noinclude> 613ef53fa1801107adb93e3c0eb28209ba253a26 Category:Stubs 14 103 114 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ This category contains articles that are incomplete and are tagged with the {{T|Stub}} template. [[Category:Maintenance]] 0ec95b0d8542e012132ff79db688797e78439093 Template:Stub/doc 10 104 115 2022-03-29T00:54:59Z FANDOM 4 Created page with " ;Description :This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category. <includeonl..." wikitext text/x-wiki ;Description :This template is used to identify a stub. Any pages using this template will be automatically placed in the [[:Category:Stubs|Stubs]] category. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> fe9e5e7f5e645666194f69dc88d7d12b5429e8f8 Template:MIT 10 105 116 2022-03-29T00:54:59Z FANDOM 4 Created page with "{{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>Category:MIT licens..." wikitext text/x-wiki {{LicenseBox|text=''This work is licensed under the [https://opensource.org/licenses/MIT MIT License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:MIT license files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> fa53e460d1a0d2cfb9e350fa64292cc428aed859 Template:LGPL 10 106 117 2022-03-29T00:54:59Z FANDOM 4 Created page with " {{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <incl..." wikitext text/x-wiki {{LicenseBox|text=''This work is licensed under the [https://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License].''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:LGPL files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> 066b54eb9300540d46a07b5148865821bd3b2f08 Template:GFDL 10 107 118 2022-03-29T00:54:59Z FANDOM 4 Created page with " {{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''Wikipedia:Text of th..." wikitext text/x-wiki {{LicenseBox|text=''This file is licensed under the GFDL. Permission is granted to copy, distribute and/or modify this image under the terms of the '''[[Wikipedia:Text of the GNU Free Documentation License|GNU Free Documentation License]]''', Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:GFDL files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> b3c309cd585718bb7808409474f98a1c5ec46103 Template:MIT/doc 10 108 119 2022-03-29T00:54:59Z FANDOM 4 Created page with ";Description :This template is used to mark images using the MIT license. ;Syntax :Type <code>{{t|MIT}}</code> on the image information page. <includeonly>Category:Ima..." wikitext text/x-wiki ;Description :This template is used to mark images using the MIT license. ;Syntax :Type <code>{{t|MIT}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> f243f408a7cb3acce5635655a2648b3dcd892584 Template:LGPL/doc 10 109 120 2022-03-29T00:54:59Z FANDOM 4 Created page with ";Description :This template is used to mark images using the LGPL. ;Syntax :Type <code>{{t|LGPL}}</code> on the image information page. <includeonly>Category:Image lic..." wikitext text/x-wiki ;Description :This template is used to mark images using the LGPL. ;Syntax :Type <code>{{t|LGPL}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> a1352dd235ba24762d42130c24a5a7971e1cdd31 Template:GFDL/doc 10 110 121 2022-03-29T00:54:59Z FANDOM 4 Created page with ";Description :This template is used to mark images using the GFDL. ;Syntax :Type <code>{{t|GFDL}}</code> on the image information page. <includeonly>Category:Image lic..." wikitext text/x-wiki ;Description :This template is used to mark images using the GFDL. ;Syntax :Type <code>{{t|GFDL}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> cb8fb84dfc8e1d8b8544fdff7530dce231764a63 Template:Nolicense 10 111 122 2022-03-29T00:54:59Z FANDOM 4 Created page with "{{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonl..." wikitext text/x-wiki {{LicenseBox|text=''This file does not have information on its copyright status.''}}{{#ifeq: {{NAMESPACENUMBER}} | 0 | <includeonly>[[Category:Unattributed files]]</includeonly>}}<noinclude> {{documentation}}</noinclude> a99128c5d8a0cd0723b13b6d9e5fd78b18dbedec Category:Unattributed files 14 112 123 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ The files in this category do not have an appropriate license selected and are tagged with the {{t|nolicense}} template. Administrators should review files in this category and either: * Update the file page with an appropriate if one can be easily determined. * Delete the image, though it is good idea to give the uploader a chance to select a license first. [[Category:Images]] [[Category:Maintenance]] fe16ed203269a56dcbf8a76f72943484fe67047f Template:Nolicense/doc 10 113 124 2022-03-29T00:54:59Z FANDOM 4 Created page with ";Description :This template is used to mark images where the copyright status is not known. It automatically adds the images to the :Category:Unattributed files|Unattribute..." wikitext text/x-wiki ;Description :This template is used to mark images where the copyright status is not known. It automatically adds the images to the [[:Category:Unattributed files|Unattributed files]] category for later maintenance ;Syntax :Type <code>{{t|Nolicense}}</code> on the image information page. <includeonly>[[Category:Image license templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 346dcb940ca838c854f75f3db5229b97cce87d40 File:Favicon.ico 6 114 125 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki == Licensing == {{CC-BY-SA}} [[Category:Wiki skin images]] 4d9dc3162be921e39ea7166659dae4b8fe461b71 Category:Hatnote templates with errors 14 115 126 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Maintenance]]" wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Module:Mbox/doc 828 116 127 2022-03-29T00:54:59Z FANDOM 4 getting rid of a red link for the documentation wikitext text/x-wiki This module is used by most of the basic [[:Category:Notice templates|Notice templates]] and is invoked by {{t|MessageBox}}. f4a47833d87441e40c6613bb641eb72f6207cbb1 Module:Mbox/data/doc 828 117 128 2022-03-29T00:54:59Z FANDOM 4 to get rid of a red link for documentation wikitext text/x-wiki This is a sub-module of [[Module:Mbox]] and is used to specify the CSS properties for message boxes. fcd42c844d485c7da3317a85c9521ea96145cb35 Module:Quote/doc 828 118 129 2022-03-29T00:54:59Z FANDOM 4 to get rid of the red link for the documentation wikitext text/x-wiki This module is used by most of the basic [[:Category:Quote templates|Quote templates]] and is invoked by {{t|Quote}}. 665dce984d14e47c31477a42382fecb536de1da7 Module:Dialogue/doc 828 119 130 2022-03-29T00:54:59Z FANDOM 4 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Dialogue}} template. d22c926bd1a5c2221b42dc1a05b2326ecaaa6712 Module:Hatnote/doc 828 120 131 2022-03-29T00:54:59Z FANDOM 4 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Hatnote}} template, which is used by a number of [[:Category:Notice templates|Notice templates]]. b5c1fc43f0f6bd96416f2fec21a7da0b34ae8aac Module:Navbox/doc 828 121 132 2022-03-29T00:54:59Z FANDOM 4 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Navbox}} template. Navbox templates are not displayed for mobile users. 23d4ed4b22c8bf7316431e1f6df6d4d5d9de1ef5 Module:Namespace detect/doc 828 122 133 2022-03-29T00:54:59Z FANDOM 4 getting rid of red links wikitext text/x-wiki This module is invoked by the {{t|Namespace}} template. 157d889ae2f345f719a68f459ee2ca550d14afb5 Module:Namespace detect/data/doc 828 123 134 2022-03-29T00:54:59Z FANDOM 4 Created page with "This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons." wikitext text/x-wiki This module holds data for [[Module:Namespace detect]] to be loaded per page, rather than per #invoke, for performance reasons. 4b5f88c95a81f026633adaae2556eeaa2896fd6f Module:Namespace detect/config/doc 828 124 135 2022-03-29T00:54:59Z FANDOM 4 Created page with "This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language. To activate a configuration item, you need to u..." wikitext text/x-wiki This module stores configuration data for Module:Namespace detect. Here you can localise the module to your wiki's language. To activate a configuration item, you need to uncomment it. This means that you need to remove the text "-- " at the start of the line. 5b3ec654956a66588b67fedc310584e2769e6f5c Template:Series 10 125 136 2022-03-29T00:54:59Z FANDOM 4 Created page with "<includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption" /></image> <dat..." wikitext text/x-wiki <includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption" /></image> <data source="release"><label>First released</label></data> <data source="seasons"><label>Seasons</label></data> <data source="episodes"><label>Episodes</label></data> <data source="runtime"><label>Run time</label></data> <data source="genre"><label>Genre</label></data> <data source="network"><label>Network</label></data> <data source="distrib"><label>Distributor</label></data> <data source="creator"><label>Created by</label></data> <data source="writer"><label>Written by</label></data> <data source="director"><label>Directed by</label></data> <data source="composer"><label>Composer</label></data> <data source="based on"><label>Based on</label></data> <data source="exec prod"><label>Executive producer</label></data> <data source="producer"><label>Producer</label></data> <data source="prod co"><label>Production company</label></data> <data source="country"><label>Country</label></data> <data source="language"><label>Language</label></data> </infobox></includeonly><noinclude>{{documentation}}</noinclude> f2e00daecd3f3df5c31267e0a9ffd721ac2f186d Template:Series/doc 10 126 137 2022-03-29T00:54:59Z FANDOM 4 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Series | title = | image = | caption = | release = | seasons = | episodes = | runtime = | genre = | network = | distrib = | creator = | writer = | director = | composer = | based on = | exec prod = | producer = | prod co = | country = | language = }}</pre> == Sample output == {{Series | title = ''Default page title'' | image = Wiki.png | caption = Test | release = Test | seasons = Test | episodes = Test | runtime = Test | genre = Test | network = Test | distrib = Test | creator = Test | writer = Test | director = Test | composer = Test | based on = Test | exec prod = Test | producer = Test | prod co = Test | country = Test | language = Test }} <pre>{{Series | title = ''Default page title'' | image = Wiki.png | caption = Test | release = Test | seasons = Test | episodes = Test | runtime = Test | genre = Test | network = Test | distrib = Test | creator = Test | writer = Test | director = Test | composer = Test | based on = Test | exec prod = Test | producer = Test | prod co = Test | country = Test | language = Test }}</pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7f9a7daecb805234290cd4addefc0c049fe125ce Template:Film 10 127 138 2022-03-29T00:54:59Z FANDOM 4 Created page with "<includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption"/></image> <g..." wikitext text/x-wiki <includeonly><infobox> <title source="title"><default>'' {{#explode:{{PAGENAME}}|(}} ''</default></title> <image source="image"><caption source="caption"/></image> <group> <data source="premiere"><label>Premiere date</label></data> <data source="genre"><label>Genre</label></data> <data source="rating"><label>Rating</label></data> <data source="runtime"><label>Runtime</label></data> <data source="director"><label>Directed by</label></data> <data source="writer"><label>Written by</label></data> <data source="music"><label>Music by</label></data> <data source="producer"><label>Produced by</label></data> <data source="budget"><label>Budget</label></data> <data source="earned"><label>Box Office</label></data> </group> <group layout="horizontal"> <header>Series</header> <data source="previous"><label>← Previous</label></data> <data source="next"><label>Next →</label></data> </group> </infobox>{{Namespace|main=[[Category:Films]]}}</includeonly><noinclude>{{documentation}}</noinclude> 92b5337f22ec52309cba873beaf3cdb11d2f64e0 Template:Film/doc 10 128 139 2022-03-29T00:54:59Z FANDOM 4 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Film | title = | image = | caption = | premiere = | genre = | rating = | runtime = | director = | writer = | music = | producer = | budget = | earned = | previous = | next = }} </pre> == Sample output == {{Film | title = This is a test | image = Wiki.png | caption = This is a test | premiere = This is a test | genre = This is a test | rating = This is a test | runtime = This is a test | director = This is a test | writer = This is a test | music = This is a test | producer = This is a test | budget = This is a test | earned = This is a test | previous = This is a test | next = This is a test }} <pre> {{Film | title = This is a test | image = Wiki.png | caption = This is a test | premiere = This is a test | genre = This is a test | rating = This is a test | runtime = This is a test | director = This is a test | writer = This is a test | music = This is a test | producer = This is a test | budget = This is a test | earned = This is a test | previous = This is a test | next = This is a test }} }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> b085f97e35a2ac96b5ddf92a22e98fbd93933736 Template:Season 10 129 140 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly><infobox type="Season"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <data source="season"><label>Season</label></data> <data source="episodes"><label>Episodes</label></data> <data source="premiere"><label>Premiered</label></data> <group layout="horizontal"> <header>Navigation</header> <data source="previous"><label>← Previous</label></data> <data source="next"><label>Next →</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Seasons]]}}</includeonly><noinclude>{{documentation}}</noinclude> 2e09c5f43c99d98363971b63ad639874c5e6c452 Template:Season/doc 10 130 141 2022-03-29T00:54:59Z FANDOM 4 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Season | title = | image = | caption = | season = | episodes = | premiere = | previous = | next = }} </pre> == Sample output == {{Season | title = This is a test | image = Wiki.png | caption = This is a test | season = This is a test | episodes = This is a test | premiere = This is a test | previous = This is a test | next = This is a test }} <pre> {{Season | title = This is a test | image = Wiki.png | caption = This is a test | season = This is a test | episodes = This is a test | premiere = This is a test | previous = This is a test | next = This is a test }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> b3f82f2223cf6f8323820bce6de5427e4b6a1380 Template:Cast 10 131 142 2022-03-29T00:54:59Z FANDOM 4 Created page with "<includeonly><infobox> <title source="name"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption" /></image> <data><label>Born..." wikitext text/x-wiki <includeonly><infobox> <title source="name"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption" /></image> <data><label>Born</label> <default>{{#if: {{{birthname|}}} | {{{birthname|}}} }}{{#if: {{{birthdate|}}} | {{#if: {{{birthname|}}} | <br />}}{{{birthdate|}}}{{#if: {{{birthplace|}}} | <br />}} }}{{#if: {{{birthplace|}}} | {{#if: {{{birthdate|}}} || {{#if: {{{birthname|}}}|<br />}} }}{{{birthplace|}}} }}</default> </data> <data><label>Died</label> <default>{{#if: {{{deathdate|}}} | {{{deathdate|}}} }}{{#if: {{{deathplace|}}} | {{#if: {{{deathdate|}}} | <br />}}{{{deathplace|}}} }}</default> </data> <data source="gender"><label>Gender</label></data> <data source="height"><label>Height</label></data> <data source="occupation"><label>Occupation</label></data> <data source="appears in"><label>Appears in</label></data> <data source="portrays"><label>Portrays</label></data> </infobox>{{Namespace|main=[[Category:Cast]]<!-- -->{{#if: {{#pos:{{{appears in|}}} | TITLE}} | [[Category:TITLE cast]] }}<!-- -->}}</includeonly><noinclude>{{documentation}}</noinclude> b1e4767be7d53e599ae3ac18e9f41dff90fdfe89 Template:Cast/doc 10 132 143 2022-03-29T00:54:59Z FANDOM 4 Created page with "== Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobo..." wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Cast | name = | image = | caption = | birthname = | birthdate = | birthplace = | deathdate = | deathplace = | gender = | height = | occupation = | appears in = | portrays = }} </pre> == Sample output == {{Cast | name = Test | image = Wiki.png | caption = Test | birthname = Name | birthdate = Date | birthplace = Place | deathdate = Date | deathplace = Place | gender = Test | height = Test | occupation = Test | appears in = Test | portrays = Test }} <pre> {{Cast | name = Test | image = Wiki.png | caption = Test | birthname = Name | birthdate = Date | birthplace = Place | deathdate = Date | deathplace = Place | gender = Test | height = Test | occupation = Test | appears in = Test | portrays = Test }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> fea3e74e01ad2f66bb54f921f82426cb1a7fa748 Template:Cite web 10 133 144 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki <includeonly>{{ #if: {{#if: {{{url|}}} | {{#if: {{{title|}}} |1}}}} ||Error on call to [[Template:cite web]]: Parameters '''url''' and '''title''' must be specified }}{{ #if: {{{archiveurl|}}}{{{archivedate|}}} | {{#if: {{#if: {{{archiveurl|}}}| {{#if: {{{archivedate|}}} |1}}}} ||Error on call to [[template:cite web]]: Parameters '''archiveurl''' and '''archivedate''' must be both specified or both omitted }} }}{{#if: {{{author|}}}{{{last|}}} | {{#if: {{{authorlink|}}} | [[{{{authorlink}}}|{{#if: {{{last|}}} | {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }} | {{{author}}} }}]] | {{#if: {{{last|}}} | {{{last}}}{{#if: {{{first|}}} | , {{{first}}} }} | {{{author}}} }} }} }}{{#if: {{{author|}}}{{{last|}}} | {{#if: {{{coauthors|}}}| <nowiki>;</nowiki>&#32;{{{coauthors}}} }} }}{{#if: {{{author|}}}{{{last|}}}| {{#if: {{{date|}}} | &#32;({{{date}}}) | {{#if: {{{year|}}} | {{#if: {{{month|}}} | &#32;({{{month}}} {{{year}}}) | &#32;({{{year}}}) }} }} |}} }}{{#if: {{{last|}}}{{{author|}}} | .&#32;}}{{ #if: {{{editor|}}} | &#32;{{{editor}}}: }}{{#if: {{{archiveurl|}}} | {{#if: {{{archiveurl|}}} | {{#if: {{{title|}}} | [{{{archiveurl}}} {{{title}}}] }}}} | {{#if: {{{url|}}} | {{#if: {{{title|}}} | [{{{url}}} {{{title}}}] }}}} }}{{#if: {{{language|}}} | &#32;<span style="font-size: 0.95em; font-weight: bold; color:#555; position: relative;">({{{language}}})</span> }}{{#if: {{{format|}}} | &#32;({{{format|}}}) }}{{#if: {{{work|}}} | .&#32;''{{{work}}}'' }}{{#if: {{{pages|}}} | &#32;{{{pages}}} }}{{#if: {{{publisher|}}} | .&#32;{{{publisher}}}{{#if: {{{author|}}}{{{last|}}} | | {{#if: {{{date|}}}{{{year|}}}{{{month|}}} || }} }} }}{{#if: {{{author|}}}{{{last|}}} ||{{#if: {{{date|}}} | &#32;({{{date}}}) | {{#if: {{{year|}}} | {{#if: {{{month|}}} | &#32;({{{month}}} {{{year}}}) | &#32;({{{year}}}) }} }} }} }}.{{#if: {{{archivedate|}}} | &#32;Archived from [{{{url}}} the original] on {{#time:F j, Y|{{{archivedate}}}}}{{#if: {{{archiveyear|}}} | , {{{archiveyear}}} }}. }}{{#if: {{{accessdate|}}} | &#32;Retrieved on {{#time:F j, Y|{{{accessdate}}}}}{{#if: {{{accessyear|}}} | , {{{accessyear}}} }}. }}{{#if: {{{accessmonthday|}}} | &#32;Retrieved on {{{accessmonthday}}}, {{{accessyear}}}. }}{{#if: {{{accessdaymonth|}}} | &#32;Retrieved on {{{accessdaymonth}}} {{{accessyear}}}. }}{{#if: {{{quote|}}} | &nbsp;“{{{quote}}}” }}</includeonly><noinclude>{{documentation}} </noinclude> 06085b03744dda1cb654deed7c8e92495d7593a6 Template:Cite web/doc 10 134 145 2022-03-29T00:54:59Z FANDOM 4 Created page with "__NOTOC__ This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprec..." wikitext text/x-wiki __NOTOC__ This template is used to [[Wikipedia:WP:CITE|cite sources]] in Wikipedia. It is specifically for web sites which are not news sources. This template replaces deprecated [[Wikipedia:Template:Teb reference|template:web reference]]. It provides lower case parameters only. A general discussion of the use of templates for adding citation of open-source web content to Wikipedia articles is available at [[Wikipedia:Citation templates|citation templates]]. This page uses [[w:Wikia:Licensing|Creative Commons Licensed]] content from [[w:c:Wookieepedia:Template:Cite web|Wookieepedia]] == Usage == ;Common form for cases where little is known about authorship of the page (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |format= |work= }}</nowiki></tt> ;Using last, first (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using author (with current date) <tt><nowiki>{{Cite web |url= |title= |accessdate=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki> |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using non-linked retrieved date, last, first <tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;Using non-linked retrieved date, author <tt><nowiki>{{Cite web |url= |title= |accessmonthday= |accessyear= |author= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;All parameters, horizontal format (delete the ones you don't need) <tt><nowiki>{{Cite web |url= |title= |accessdate= |accessmonthday= |accessdaymonth = |accessyear= |author= |last= |first= |authorlink= |coauthors= |date= |year= |month= |format= |work= |publisher= |pages= |language= |archiveurl= |archivedate= |quote= }}</nowiki></tt> ;All parameters, vertical format <pre>{{Cite web | url = | title = | accessdate = | accessdaymonth = | accessmonthday = | accessyear = | author = | last = | first = | authorlink = | coauthors = | date = | year = | month = | format = | work = | publisher = | pages = | language = | archiveurl = | archivedate = | quote = }}</pre> === Required parameters === * '''url''': URL of online item. * '''title''': Title of online item. ''For producing a [[Wikipedia:WP:CONTEXT#Dates|wikilinked date]] of retrieval:'' :* '''accessdate''': Full date when item was accessed, in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, for example "accessdate = {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}". ''Must not be wikilinked'' ''For producing a non-wikilinked date of retrieval:'' :* '''accessmonthday''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = May 10", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on May 10, 2006.'' :* '''accessdaymonth''' and '''accessyear''': Month and day when item was accessed, for example "accessmonthday = 10 May", <u>and</u> year when item was accessed, for example "accessyear = 2005". Produces: ''Retrieved on 10 May 2006.'' === Optional parameters === * '''author''': Author ** '''last''' works with '''first''' to produce <code>last, first</code> ** '''authorlink''' works either with '''author''' or with '''last''' & '''first''' to link to the appropriate wikipedia article. Does not work with URLs. ** '''coauthors''': allows additional authors * '''date''': Full date of publication, preferably in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. May be wikilinked. ** OR: '''year''': Year of publication, and '''month''': Name of the month of publication. If you also have the day, use ''date'' instead. Must not be wikilinked. * '''format''': Format, e.g. PDF. HTML implied if not specified. * '''work''': If this item is part of a larger work, name of that work. * '''publisher''': Publisher, if any. * '''pages''': ''pp. 5–7'': first page and optional last page. This is for listing the pages relevant to the citation, not the total number of pages in the book. This is especially useful for PDF format, where the page can be linked to with the <code>#page=''number''</code> anchor tagged on the end of the URL: *: <code><nowiki>pages = [http://www.example.org/file.pdf#page=123 p. 123]</nowiki></code> * '''language''': language of publication (don't specify "English" as this is the default). * '''archiveurl''': URL of the archive location of the item (requires '''archivedate''') * '''archivedate''': Date when the item was archived (requires '''archiveurl'''), in [[Wikipedia:ISO 8601|ISO 8601]] YYYY-MM-DD format, e.g. ''2006-02-17''. Must not be wikilinked; it will be linked automatically. * '''quote''': Relevant quote from online item. == Examples == ;Some standard use cases * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Doe, John | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | title=My Favorite Things Part II | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | url=http://www.example.org | accessdate=2005-07-06}}</span> * <nowiki>{{Cite web | url=http://www.nfl.com/fans/ | title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</nowiki><br>→ <span style="background:white">{{cite web | url=http://www.nfl.com/fans/ | title=Digest of Rules | publisher= National Football League | accessdate=2005-07-06 }}</span> ;Non-linking date of retrieval (using accessmonthday and accessyear) * <nowiki>{{Cite web | title=My Favorite Things Part II | work=Encyclopedia of Things | url=http://www.example.org/ | accessmonthday=July 6 | accessyear=2005 }}</nowiki><br/> → <span style="background:white">{{cite web | title=My Favorite Things Part II | work=Encyclopedia of Things | url=http://www.example.org/ | accessmonthday=July 6 | accessyear=2005 }}</span> ;Using format * <nowiki>{{Cite web | title=List of psychotropic substances under international control | publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | publisher = International Narcotics Control Board | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06}}</span> ;language * <nowiki>{{Cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 | language=French }}</nowiki><br/>→ <span style="background:white">{{cite web | author=Joliet, François | title=Honnit soit qui mal y pense | date=2005-04-30 | url=http://www.example.org | accessdate=2005-07-06 | language=French}}</span> ;coauthors * <nowiki>{{Cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</nowiki><br/>→ <span style="background:white">{{cite web | first=John | last=Doe | coauthors=Peter Smith, Jim Smythe | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span> ;No author * <nowiki>{{Cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | publisher=Open Publishing | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2006-05-16 }}</span> ;No author, no publisher * <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki></br>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | work=Encyclopedia of Things | url=http://www.example.org/ | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</nowiki><br/>→ <span style="background:white">{{cite web | title=My Favorite Things Part II | date=2005-04-30 | url=http://www.example.org/ | accessdate=2005-07-06 }}</span> * <nowiki>{{Cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | language=Greek }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | language=Greek }}</span> ; Using archiveurl and archivedate to refer to items that went away but are available from an archive site * <nowiki>{{Cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf | archivedate=2005-09-11 }}</nowiki><br/> → <span style="background:white">{{cite web | title=List of psychotropic substances under international control | date=2005-04-30 | url=http://www.incb.org/pdf/e/list/green.pdf | format = PDF | accessdate=2005-07-06 | archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf | archivedate=2005-09-11 }}</span> * <nowiki> {{Cite web |url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm |title=Interview with Maggie Downs |date=2006-03-31 |publisher=The Desert Sun |archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm |archivedate=2006-04-26 }}</nowiki><br/> → <span style="background:white">{{cite web |url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&story=20060405-01shore.htm |title=Interview with Maggie Downs |date=2006-03-31 |publisher=The Desert Sun |archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm |archivedate=2006-04-26}}</span> ; Using quote * <nowiki>{{Cite web | title = My Favorite Things Part II | work = Encyclopedia of Things | url = http://www.example.org/ | accessdate = 2005-07-06 | quote = Lorem ipsum dolor. }}</nowiki><br/>→ <span style="background:white">{{cite web | title = My Favorite Things Part II | work = Encyclopedia of Things | url = http://www.example.org/ | accessdate = 2005-07-06 | quote = Lorem ipsum dolor. }}</span> ;No parameters (error) * <nowiki>{{Cite web}}</nowiki><br/>→ <span style="background:white">{{cite web}}</span> <includeonly>[[Category:General wiki templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 49566b6a3601a57e7e4d3521179ec7d3300ec2a1 Thunder, Ice, and Everything Nice:Wiki rules 4 135 146 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki Below is a suggested set of rules to follow when editing this wiki. Administrators of this wiki should read these rules and adapt them as necessary. # '''Keep it civil''': Do not make personal attacks on other people. If you need to criticize another user’s argument, do so without attacking them as a person. Do not use bigoted language, including slurs which degrade another person or group of people based on gender, race, sexual orientation, nationality, religion, etc. # '''Be a productive member of the wiki''': Contribute to the wiki in line with the established processes and conventions. Need help? Ask an [[Special:ListUsers/sysop|administrator]]! Disrupting the wiki with “edit warring” over differing opinions of a topic with another user or group of users is not productive. # '''Do not engage in excessive self-promotion''': The wiki is a collaborative community resource for the topic at hand. It is NOT a free place to advertise your related website, YouTube channel, blog, social media account, etc. Have a question about whether your link would be welcome? Ask an administrator! # '''Do not harass other users''': If somebody asks you to stop posting certain content on their wall, respect their wishes. It is their wall. # '''Do follow community guidelines for formatting''': When a community has established formatting, it’s important to adhere to that, especially when spoiler content is involved. [[Category:{{SITENAME}}]] efad0088b04516c5e666314530cc43875a74fd71 Blog:Recent posts 0 136 147 2022-03-29T00:54:59Z FANDOM 4 Created article for recent blog posts wikitext text/x-wiki <bloglist summary="true" count=50><title>⧼create-blog-post-recent-listing-title ⧽</title><type>plain</type><order>date</order></bloglist> afb902f1d8c2d7adccbdd48b1fbd4a0cc5361783 Category:Blog posts 14 137 148 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki This is an automatically generated list of blog posts [[Category:Community]] 864f70c2af84fd84c1901d154b90eb4facc9f37c Category:Community 14 138 149 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:{{SITENAME}}]]" wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Pages with broken file links 14 139 150 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Maintenance]]" wikitext text/x-wiki [[Category:Maintenance]] a106a39e26c77e7b2ec90cb83728a6446cb6a1a1 Category:Videos 14 140 151 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Media]]" wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Screenshots 14 141 152 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Images]]" wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 Category:Wiki skin images 14 142 153 2022-03-29T00:54:59Z FANDOM 4 Created page with "[[Category:Images]]" wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 MediaWiki:Mainpage 8 143 154 2022-03-29T00:54:59Z FANDOM 4 wikitext text/x-wiki Main Page 29b077bd4b72e57c6500fdd2d77e1a8b60f2816b 155 154 2022-03-29T00:55:00Z FANDOM 4 SEO wikitext text/x-wiki Thunder, Ice, and Everything Nice Wiki 41454ed908cc2d76c0059c5623dddb6fb8d5421d File:Site-background-dark 6 144 157 2022-03-29T00:55:40Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-background-light 6 145 158 2022-03-29T00:55:40Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Thunder, Ice, and Everything Nice Wiki 0 2 3 2 2022-03-29T00:57:40Z Gingerdanger 2 Adding categories wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> Saturday D&D We're a collaborative community website about {{topic}} that anyone, including you, can build and expand. Wikis like this one depend on readers getting involved and adding content. Click the "ADD NEW PAGE" or "EDIT" button at the top of any page to get started! ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Placeholder | [[A page about your topic]] |link=A page about your topic File:Placeholder | [[A Main Character]] |link=A Main Character File:Placeholder | [[The First Episode]] |link=The First Episode File:Placeholder | [[An Important Location]] |link=An Important Location File:Placeholder | [[A Key Event]] |link=A Key Event File:Placeholder | [[A Crucial Item]] |link=A Crucial Item </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:The Party]] [[Category:Settings]] 5733c4ee6156dc8f5de6db6d775321bf9219181b 4 3 2022-03-29T02:04:21Z Gingerdanger 2 Adding categories wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> Saturday D&D We're a collaborative community website about {{topic}} that anyone, including you, can build and expand. Wikis like this one depend on readers getting involved and adding content. Click the "ADD NEW PAGE" or "EDIT" button at the top of any page to get started! ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Placeholder | [[A page about your topic]] |link=A page about your topic File:Placeholder | [[A Main Character]] |link=A Main Character File:Placeholder | [[The First Episode]] |link=The First Episode File:Placeholder | [[An Important Location]] |link=An Important Location File:Placeholder | [[A Key Event]] |link=A Key Event File:Placeholder | [[A Crucial Item]] |link=A Crucial Item </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:The Party]] [[Category:Settings]] [[Category:Settlements]] 7ada9c322861498b48f0481c69f2240227f99e1d 5 4 2022-03-29T02:10:18Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> Saturday D&D We're a collaborative community website about {{topic}} that anyone, including you, can build and expand. Wikis like this one depend on readers getting involved and adding content. Click the "ADD NEW PAGE" or "EDIT" button at the top of any page to get started! ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Placeholder|link=A page about your topic| [[The Banes of Thunder]] File:Placeholder|link=A Main Character| [[A Main Character]] File:Placeholder|link=The First Episode| [[The First Episode]] File:Placeholder|link=An Important Location| [[An Important Location]] File:Placeholder|link=A Key Event| [[A Key Event]] File:Placeholder|link=A Crucial Item| [[A Crucial Item]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:The Party]] [[Category:Settings]] [[Category:Settlements]] 3d5c8764a82332e509c49cdf0774a060762e9d7a Category:Settlements 14 146 159 2022-03-29T02:04:36Z Gingerdanger 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Thunder, Ice, and Everything Nice Wiki 0 2 6 5 2022-03-30T16:26:46Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Placeholder|link=A page about your topic| [[The Banes of Thunder]] File:Placeholder|link=A Main Character| [[A Main Character]] File:Placeholder|link=The First Episode| [[The First Episode]] File:Placeholder|link=An Important Location| [[An Important Location]] File:Placeholder|link=A Key Event| [[A Key Event]] File:Placeholder|link=A Crucial Item| [[A Crucial Item]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:The Party]] [[Category:Settings]] [[Category:Settlements]] f9b983d90f3d88501f67c1648f7dd2c1ed280e91 7 6 2022-05-09T23:38:42Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Placeholder|link=A page about your topic| [[The Banes of Thunder]] File:Placeholder|link=A Main Character| [[A Main Character]] File:Placeholder|link=The First Episode| [[The First Episode]] File:Placeholder|link=An Important Location| [[An Important Location]] File:Placeholder|link=A Key Event| [[A Key Event]] File:Placeholder|link=A Crucial Item| [[A Crucial Item]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:The Party]] [[Category:Settings]] [[Category:Settlements]] e354b6d0a49c25ac91657be9423b2dad3dd95ba8 8 7 2022-05-09T23:42:47Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpeg|[[The Banes of Thunder]] File:Placeholder|link=The First Episode| [[The First Episode]] File:Placeholder|link=A Main Character| [[A Main Character]] File:Placeholder|link=An Important Location| [[An Important Location]] File:Placeholder|link=A Key Event| [[A Key Event]] File:Placeholder|link=A Crucial Item| [[A Crucial Item]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:The Party]] [[Category:Settings]] [[Category:Settlements]] cd45a780020bf0a0184d599e23ca41e344a7e67b 9 8 2022-05-10T20:50:55Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpeg|[[The Banes of Thunder]] File:Placeholder|link=The First Episode| [[The First Episode]] File:Placeholder|link=A Main Character| [[A Main Character]] File:Placeholder|link=An Important Location| [[An Important Location]] File:Placeholder|link=A Key Event| [[A Key Event]] File:Placeholder|link=A Crucial Item| [[A Crucial Item]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:Settings]] 90f58246ddd8b2d68a10fb90c531fc18f03f5486 10 9 2022-05-12T15:27:59Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpeg|[[The Banes of Thunder]] File:Placeholder|link=A Crucial Item| [[The Crown of Neverwinter]] File:Placeholder|link=The First Episode| [[The Sword Coast]] File:Placeholder|link=A Main Character| [[Neverwinter]] File:Placeholder|link=An Important Location| [[The Feywild]] File:Placeholder|link=A Key Event| [[Courts of the Fey]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:Settings]] 86ba84c49827721ee794ac5f04b384471d385ba3 11 10 2022-05-12T15:34:33Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpeg|[[The Banes of Thunder]] File:Placeholder|link=A Crucial Item| [[The Crown of Neverwinter]] File:Placeholder|link=The First Episode| [[The Sword Coast]] File:Placeholder|link=A Main Character| [[Neverwinter]] File:Placeholder|link=An Important Location| [[The Feywild]] File:Placeholder|link=A Key Event| [[Courts of the Fey]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:Settings]] aa11313521d9a370779e4495e590e6704c416689 Category:The Party 14 147 160 2022-03-30T16:28:07Z Gingerdanger 2 Created page with "The adventurers, both past and present. Once stranger, now companions." wikitext text/x-wiki The adventurers, both past and present. Once stranger, now companions. dce573313c8f46d10385aefaf998193d60123e31 161 160 2022-05-10T04:21:24Z Gingerdanger 2 wikitext text/x-wiki The adventurers, both past and present. Once stranger, now companions. == PCs == * <br /> 92f4b7a2fadeafd1901d16ffd00adc6644b7f980 162 161 2022-05-10T04:21:41Z Gingerdanger 2 wikitext text/x-wiki The adventurers, both past and present. Once stranger, now companions. * <br /> 0b4cd5a27ba85be6329fe50a2db9c1afc8d1573c File:Celtic Boar.jpeg 6 148 163 2022-05-09T23:40:44Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 The Banes of Thunder 0 149 164 2022-05-09T23:58:38Z Gingerdanger 2 Created page with "A group of adventurers formed in Phandalin to complete some jobs for the people in order to gain some quick cash. The original members were [[Helu]], [[Marcus Blackblood]], ..." wikitext text/x-wiki A group of adventurers formed in Phandalin to complete some jobs for the people in order to gain some quick cash. The original members were [[Helu]], [[Marcus Blackblood]], [[Sedge Thistlestrike]]. Other adventurers who joined later include [[Fen Melody]], [[Blossom]], [[Lichen]], and [[Eilif Crimsonlight]]. NPCs who have joined include [[Ronaan]] and [[Oscar]]. At first the group had no name. They earned it when Helu, Marcus, Sedge, Fen, and Ronaan took down [[Gorthok, the Thunder Boar]]. == History == HISTORY GOES HERE == Animal Companions == * [[Porsche]] * [[Swifty]] * [[Shitake]] * [[Craic]] * [[Amadán]] 4edcd3028ff6c8589b86015b938455281dc8775f 165 164 2022-05-10T00:09:45Z Gingerdanger 2 wikitext text/x-wiki A group of adventurers formed in Phandalin to complete some jobs for the people in order to gain some quick cash. The original members were [[Helu]], [[Marcus Blackblood]], [[Sedge Thistlestrike]]. Other adventurers who joined later include [[Fen Melody]], [[Blossom]], [[Lichen]], and [[Eilif Crimsonlight]]. Allies who have joined include [[Ronaan]] and [[Oscar]]. At first the group had no name. They earned it when Helu, Marcus, Sedge, Fen, and Ronaan took down [[Gorthok, the Thunder Boar]]. == History == HISTORY GOES HERE == Members == === Current === * [[Helu]] * [[Marcus Blackblood]] * [[Blossom]] * [[Sedge Thistlestrike]] * [[Eilif Crimsonlight]] === Past === * [[Fen Melody]] * [[Lichen]] == Animal Companions == * [[Porsche]] * [[Swifty]] * [[Shitake]] * [[Craic]] * [[Amadán]] == Allies == * Ronaan Wisespeaker * Oscar * The King of Dragonflies * Halia Thorton * Falcon * Pell * Ember == Enemies == * Sir Rhadur Stoman * Gorthok the Thunder Boar * Queen Mab 50910505fae3fcf62ebb46a7afcf65d983e16970 Helu 0 150 166 2022-05-10T04:22:50Z Gingerdanger 2 Created page with "=== Appearance === === History === === History ===" wikitext text/x-wiki === Appearance === === History === === History === 8af39a311681cd5a658aa8877fefdbd549cfa764 167 166 2022-05-10T14:54:02Z Gingerdanger 2 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|portrayedby=Bones|race=Half-Elf, Half-Orc|class=Barbarian, Wild Magic|age=16|hometown=Neverwinter}} === Appearance === === History === === History === 6110cad1beb8aa106f66b3e0d112fac68432dfd0 168 167 2022-05-10T15:07:51Z Gingerdanger 2 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} === Appearance === === History === === History === 606ed27f22ee414cba338b69b58dc1a044dc051c 169 168 2022-05-10T15:18:34Z Gingerdanger 2 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == <br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == 6f8ab77dfc8a34dd68afa54fcf55fba1dde919d3 170 169 2022-05-10T15:28:11Z Gingerdanger 2 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother] Unnamed sibling|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == <br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == a347db8495720a4b7b41145ae507ee12c592f99d 171 170 2022-05-10T15:28:40Z Gingerdanger 2 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == <br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == 025432eff433f8172d4a2d5e9ab52143073ca98b 172 171 2022-05-10T20:49:01Z Gingerdanger 2 Adding categories wikitext text/x-wiki {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == <br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == [[Category:The Party]] a54a428a7b39b2e24409263c4a4ab5613dddd0cc File:Helu.png 6 151 176 2022-05-10T14:55:49Z Gingerdanger 2 Art by @jupiter-amore wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Marcus.png 6 152 177 2022-05-10T14:56:06Z Gingerdanger 2 Art by @jupiter-amore wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Sedge.png 6 153 178 2022-05-10T14:56:21Z Gingerdanger 2 Art by @jupiter-amore wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Blossom.png 6 154 179 2022-05-10T14:56:36Z Gingerdanger 2 Art by @jupiter-amore wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Fen.png 6 155 180 2022-05-10T14:56:56Z Gingerdanger 2 Art by @jupiter-amore wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Lichen.png 6 156 181 2022-05-10T14:58:44Z Gingerdanger 2 Art by @jupiter-amore wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a Template:Character 10 9 20 19 2022-05-10T15:04:27Z Gingerdanger 2 wikitext text/x-wiki <includeonly><infobox type="Character"> <title source="name"/> <image source="image"> <caption source="imagecaption" /> </image> <group> <data source="aliases"><label>Aliases</label></data> <data source="relatives"><label>Relatives</label></data> <data source="affiliation"><label>Affiliation</label></data> <data source="age"><label>Age</label></data> <data source="hometown"><label>Hometown</label></data> <data source="player"><label>Player</label></data> </group> <group> <header>PC Stats</header> <data source="race"><label>Race</label></data> <data source="class"><label>Class</label></data> <data source="subclass"><label>Subclass</label></data> <data source="str"><label>STR</label></data> <data source="dex"><label>DEX</label></data> <data source="con"><label>CON</label></data> <data source="wis"><label>WIS</label></data> <data source="int"><label>INT</label></data> <data source="cha"><label>CHA</label></data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}}</includeonly><noinclude>{{Documentation}}</noinclude> 5475ed0e544365dec4cf7a14ac0289f7bf86c305 Marcus Blackblood 0 157 182 2022-05-10T15:08:59Z Gingerdanger 2 Created page with "== Appearance == == History == == Trivia ==" wikitext text/x-wiki == Appearance == == History == == Trivia == 85b6d9bc5f71daa115c342214d43b33ef343354f 183 182 2022-05-10T15:15:49Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Marcus Blackblood|image=Marcus.png|aliases=PC Richard|relatives=Unnamed wife|affiliation=The Banes of Thunder|age=17 (currently) 22 (formerly)|hometown=Neverwinter|player=Justin|race=Zariel Tiefling|class=Warlock|subclass=The Great Old One|str=10 [+0]|dex=16 [+3]|con=14 [+2]|wis=13 [+1]|int=12 [+1]|cha=20 [+5]}} == Appearance == == History == == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) == Trivia == 8d5d89b3f356235f0b03ed560a1bea23a2308565 184 183 2022-05-10T17:19:46Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Marcus Blackblood|image=Marcus.png|aliases=PC Richard|relatives=Unnamed wife|affiliation=The Banes of Thunder|age=17 (currently) 20 (formerly)|hometown=Neverwinter|player=Justin|race=Zariel Tiefling|class=Warlock|subclass=The Great Old One|str=10 [+0]|dex=16 [+3]|con=14 [+2]|wis=13 [+1]|int=12 [+1]|cha=20 [+5]}} == Appearance == == History == == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) == Trivia == a2c5570c8715c0ce633ab6a7e1611a5561083549 185 184 2022-05-10T20:49:09Z Gingerdanger 2 Adding categories wikitext text/x-wiki {{Character|name=Marcus Blackblood|image=Marcus.png|aliases=PC Richard|relatives=Unnamed wife|affiliation=The Banes of Thunder|age=17 (currently) 20 (formerly)|hometown=Neverwinter|player=Justin|race=Zariel Tiefling|class=Warlock|subclass=The Great Old One|str=10 [+0]|dex=16 [+3]|con=14 [+2]|wis=13 [+1]|int=12 [+1]|cha=20 [+5]}} == Appearance == == History == == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) == Trivia == [[Category:The Party]] 4043ce504d9ae550dbb61f7da2500fa8a9d587a3 Blossom 0 158 188 2022-05-10T15:19:08Z Gingerdanger 2 Created page with "BLOSSOM" wikitext text/x-wiki BLOSSOM f89ed60e4698d6d3c29ef94603bd3ac34a762854 189 188 2022-05-10T15:22:01Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry == Additional Companions == * Craic == Trivia == 78292ec614902cae0754c3835b3b8ced7b5238ee 190 189 2022-05-10T16:14:23Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. <br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry == Additional Companions == * Craic == Trivia == 804a3141866681de408a6adde53df398d15b7cda 191 190 2022-05-10T20:49:19Z Gingerdanger 2 Adding categories wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. <br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry == Additional Companions == * Craic == Trivia == [[Category:The Party]] 08e349e81abfc0513ed5182ab12d870777d5f203 Sedge Thistlestrike 0 159 196 2022-05-10T15:23:56Z Gingerdanger 2 Created page with "== Appearance == == History == == Notable Items == * Dragon Slayer Longsword * Goggles of Night * Mithral Chain Mail * Sending Stones * Wand of Pyrotechnics == Additi..." wikitext text/x-wiki == Appearance == == History == == Notable Items == * Dragon Slayer Longsword * Goggles of Night * Mithral Chain Mail * Sending Stones * Wand of Pyrotechnics == Additional Companions == * Porche == Trivia == 782e6bb862a4771c700953deeed0ba277f82827e 197 196 2022-05-10T15:26:22Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Sedge Thistlestrike|image=Sedge.png|aliases=Sun/Son Don|relatives=Unnamed Father Unnamed Mother|affiliation=The Banes of Thunder|age=25|hometown=Candlekeep|player=Ike|race=Kalashtar|class=Paladin|subclass=Oath of Devotion|str=17 [+3]|dex=9 [-1]|con=12 [+1]|wis=15 [+2]|int=13 [+1]|cha=17 [+3]}} == Appearance == == History == == Notable Items == * Dragon Slayer Longsword * Goggles of Night * Mithral Chain Mail * Sending Stones * Wand of Pyrotechnics == Additional Companions == * Porche == Trivia == 3d4bdd22673a4277e98c8a9d79cba845234b2ccb 198 197 2022-05-10T20:49:33Z Gingerdanger 2 Adding categories wikitext text/x-wiki {{Character|name=Sedge Thistlestrike|image=Sedge.png|aliases=Sun/Son Don|relatives=Unnamed Father Unnamed Mother|affiliation=The Banes of Thunder|age=25|hometown=Candlekeep|player=Ike|race=Kalashtar|class=Paladin|subclass=Oath of Devotion|str=17 [+3]|dex=9 [-1]|con=12 [+1]|wis=15 [+2]|int=13 [+1]|cha=17 [+3]}} == Appearance == == History == == Notable Items == * Dragon Slayer Longsword * Goggles of Night * Mithral Chain Mail * Sending Stones * Wand of Pyrotechnics == Additional Companions == * Porche == Trivia == [[Category:The Party]] e3339fa1bb64ecf540ab2b807e8b675105d536fb Eilif Crimsonlight 0 160 199 2022-05-10T15:29:54Z Gingerdanger 2 Created page with "== Appearance == == History == == Notable Items == * Shatterspike == Additional Companions == * Shitake (Shit) == Trivia ==" wikitext text/x-wiki == Appearance == == History == == Notable Items == * Shatterspike == Additional Companions == * Shitake (Shit) == Trivia == 733b276f098fc35e0c05302248d18cf72ec082c0 200 199 2022-05-10T15:56:07Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Eilif Crimsonlight|image=Eilif.png|relatives=Unnamed Mother Unnamed Father|affiliation=The Banes of Thunder|hometown=Unknown|player=Wing|race=Half-elf|class=Fighter|subclass=Echo Knight|str=20 [+5]|dex=16 [+3]|con=18 [+4]|wis=12 [+1]|int=13 [+1]|cha=9 [-1]}} == Appearance == == History == == Notable Items == * Shatterspike == Additional Companions == * Shitake (Shit) == Trivia == 23c2d682d99adddaba94d0d5460a7c788a98b51f 201 200 2022-05-10T20:50:07Z Gingerdanger 2 Adding categories wikitext text/x-wiki {{Character|name=Eilif Crimsonlight|image=Eilif.png|relatives=Unnamed Mother Unnamed Father|affiliation=The Banes of Thunder|hometown=Unknown|player=Wing|race=Half-elf|class=Fighter|subclass=Echo Knight|str=20 [+5]|dex=16 [+3]|con=18 [+4]|wis=12 [+1]|int=13 [+1]|cha=9 [-1]}} == Appearance == == History == == Notable Items == * Shatterspike == Additional Companions == * Shitake (Shit) == Trivia == [[Category:The Party]] 84a0b41367b20cbb3056ab348d64cfec783b9efc File:Eilif.png 6 161 202 2022-05-10T15:55:11Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fen Melody 0 162 203 2022-05-10T19:05:22Z Gingerdanger 2 Created page with "== Appearance == == History == == Trivia ==" wikitext text/x-wiki == Appearance == == History == == Trivia == 2f3723afdd57e829362e86bd7fdfb9afcf6ac037 204 203 2022-05-10T19:06:41Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Fen Melody|image=fen.png|relatives=Unnamed mother Unnamed father|affiliation=The Banes of Thunder (formerly)|hometown=Neverwinter|player=Shy|race=Half-elf, half-orc|class=Cleric|subclass=Nature Domain}} == Appearance == == History == == Trivia == 1df13396d5f448d539d477cca966bafddfd1e1d5 Lichen 0 163 205 2022-05-10T19:07:47Z Gingerdanger 2 Created page with "== Appearance == == History == == Notable Items == * Luckstone * Instrument of Illusions == Trivia ==" wikitext text/x-wiki == Appearance == == History == == Notable Items == * Luckstone * Instrument of Illusions == Trivia == 3b921ca60918d861064474479ba1429d1dd9e3e5 206 205 2022-05-10T19:41:20Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Lichen|image=Lichen.png|relatives=Unnamed mother Unnamed step-father The King of Dragonflies|affiliation=The Banes of Thunder|age=27|hometown=Neverwinter|player=Zelda|race=Tiefling|class=Warlock/Cleric|subclass=The Archfey/Knowledge Domain|str=10 [+0]|dex=11 [+0]|con=14 [+2]|wis=14 [+2]|int=14 [+4]|cha=18 [+4]}} == Appearance == == History == == Notable Items == * Luckstone * Instrument of Illusions == Trivia == 5b4cd9b7200b592c70626a4868fd7baafffa3c50 207 206 2022-05-10T20:46:48Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Lichen|image=Lichen.png|relatives=Unnamed mother Unnamed step-father The King of Dragonflies|affiliation=The Banes of Thunder|age=27|hometown=Neverwinter|player=Zelda|race=Fey Touched Tiefling|class=Warlock/Cleric|subclass=The Archfey/Knowledge Domain|str=10 [+0]|dex=11 [+0]|con=14 [+2]|wis=14 [+2]|int=14 [+4]|cha=18 [+4]}}Lichen is a tiefling from [[Neverwinter]] who made a warlock pact with the [[Archfey]] known as the [[King of Dragonflies]]. She joined the [[The Banes of Thunder|Banes of Thunder]] shortly after they defeated [[Gorthok]], only to disappear from [[Icespire Hold]] after she and the others defeated [[Cryovain]]. == Appearance == Lichen is a tiefling with green skin, pointed ears, and blue hair. Her horns spiral upward and are covered with small vines and flowers. Rather than feet, she has hooves, much like a satyr's, and she has a tail with a spade-shaped pointed tip. She wears a purple top and purple pants, along with a brown jacket. Around her neck is a velvet choker set with a large ruby gemstone that functions as her pact amulet. == History == === Before joining the party === Lichen and her mother moved to Neverwinter when she was 3, where her mother became a music teacher for the temple of Milil and for private households. Previously, her mother was a traveler, where she presumably met Lichen's father. Lichen grew up in and around the temple of Milil with her mother, her step-father, and her 2 step-siblings. When she was in her early twenties, her mother gifted her the ruby choker she now wears, claiming that it had been Lichen's father's. When she put it on, she began to speak to an entity who claimed to be her father. He introduced himself as the King of Dragonflies. He later gave her a message to give to the group known as the Banes of Thunder, and requested that she travel with them to see the world beyond Neverwinter. === After joining the party === Lichen met the party at the Stone-hill Inn in [[Phandalin]], where she gave them the message and requested to join them. Though they were hesitant at first, she accompanied them as they went to Axeholm to secure a safe haven in the event of a dragon attack. Later, when the party went to the Dragon Barrow, she helped fend off bounty hunters and sent the last hunter to the Feywild with the centaur [[Xanth]]. Lichen and the rest of the party made the climb up to Icespire Hold to take down Cryovain. After the fight, she disappeared along with [[Ronaan]], presumably into the [[Feywild]]. Her last known location was somewhere on the sea as reported by the King of Dragonflies. == Notable Items == * Luckstone * Instrument of Illusions == Trivia == * While her race is mechanically similar to a variant tiefling, it was reflavored to fit the Fey themes of her backstory and class. Thus her wings are dragonfly wings, and her fire resistance was changed to a poison resistance. 5c5af81a62130eb7fb830c7e8dc9664cd27a042b The Crown of Neverwinter 0 164 208 2022-05-12T15:29:58Z Gingerdanger 2 Created page with "== Appearance == == History == == Trivia ==" wikitext text/x-wiki == Appearance == == History == == Trivia == 2f3723afdd57e829362e86bd7fdfb9afcf6ac037 209 208 2022-05-12T15:32:55Z Gingerdanger 2 wikitext text/x-wiki {{Item|image=Mr-darwenstreet-crownuplox.jpg}} == Appearance == == History == == Trivia == ce072a7df0bcf3bad344929f3c09ef1089776fd9 File:Mr-darwenstreet-crownuplox.jpg 6 165 210 2022-05-12T15:32:17Z Gingerdanger 2 Art by https://www.artstation.com/mrdarwenstreet wikitext text/x-wiki == Summary == Art by https://www.artstation.com/mrdarwenstreet 16cf15439c96abd74bab8ff7e518d473764e97a5 File:CrownofNeverwinter.webp 6 166 211 2022-05-12T15:38:38Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Sword Coast.jpg 6 167 212 2022-05-12T15:47:49Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Neverwinter.jpg 6 168 213 2022-05-12T15:48:23Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Marcus wanted poster.png 6 169 214 2022-05-12T15:48:58Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:The Feywild.jpg 6 170 215 2022-05-12T15:50:55Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 The Sword Coast 0 171 216 2022-05-12T15:53:04Z Gingerdanger 2 Created page with "== History == == Settlements == == Important NPCs == == Trivia ==" wikitext text/x-wiki == History == == Settlements == == Important NPCs == == Trivia == 71e9891c3fa37a6b0cda59411ba28c175d4eff8c 217 216 2022-05-12T15:55:55Z Gingerdanger 2 wikitext text/x-wiki {{Location|image=Sword Coast.jpg}} == History == == Settlements & Locations == === Settlements === * Neverwinter * Phandalin * Leilon === Locations === * Butterskull Ranch * Axeholm * Dragon Barrow * Icespire Hold * Logger's Camp * Falcon's Hunting Lodge * Tower of Storms * Woodland Manse == Important NPCs == == Trivia == 7c2ed9b760292bec4e7c1d35dcadc2c8d06d64d0 218 217 2022-05-12T15:56:19Z Gingerdanger 2 /* Settlements */ wikitext text/x-wiki {{Location|image=Sword Coast.jpg}} == History == == Settlements & Locations == === Settlements === * [[Neverwinter]] * [[Phandalin]] * Leilon === Locations === * Butterskull Ranch * Axeholm * Dragon Barrow * Icespire Hold * Logger's Camp * Falcon's Hunting Lodge * Tower of Storms * Woodland Manse == Important NPCs == == Trivia == ae11387762209105132de9d744d3c265444d9ae8 219 218 2022-05-12T16:04:13Z Gingerdanger 2 wikitext text/x-wiki {{Location|image=Sword Coast (Full).jpg}} == History == == Settlements & Locations == === Settlements === * [[Neverwinter]] * [[Phandalin]] * Leilon * Umbrage Hill * Butterskull Ranch * Gnomengarde * Falcon's Hunting Lodge === Locations === * Conyberry * Mountain's Toe Gold Mine * Axeholm * Dragon Barrow * Icespire Hold * Logger's Camp * Tower of Storms * Woodland Manse * Dwarven Excavation * Shrine of Savras * Circle of Thunder == Important NPCs == == Trivia == cc87f487a6eaf6120d26396e9acc786d3679ff05 220 219 2022-05-12T16:07:01Z Gingerdanger 2 Adding categories wikitext text/x-wiki {{Location|image=Sword Coast (Full).jpg}} == History == == Settlements & Locations == === Settlements === * [[Neverwinter]] * [[Phandalin]] * Leilon * Umbrage Hill * Butterskull Ranch * Gnomengarde * Falcon's Hunting Lodge === Locations === * Conyberry * Mountain's Toe Gold Mine * Axeholm * Dragon Barrow * Icespire Hold * Logger's Camp * Tower of Storms * Woodland Manse * Dwarven Excavation * Shrine of Savras * Circle of Thunder == Important NPCs == == Trivia == [[Category:Sword Coast]] f534db69a5af1f8bed504ec3187e087c3d541dcd 221 220 2022-05-12T16:09:15Z Gingerdanger 2 wikitext text/x-wiki {{Location|image=Sword Coast (Full).jpg|imagecaption=The Sword Coast|location=Faerun}} == History == == Settlements & Locations == === Settlements === * [[Neverwinter]] * [[Phandalin]] * Leilon * Umbrage Hill * Butterskull Ranch * Gnomengarde * Falcon's Hunting Lodge === Locations === * Conyberry * Mountain's Toe Gold Mine * Axeholm * Dragon Barrow * Icespire Hold * Logger's Camp * Tower of Storms * Woodland Manse * Dwarven Excavation * Shrine of Savras * Circle of Thunder == Important NPCs == == Trivia == [[Category:Sword Coast]] b55abf061130f4d6ec4f59d6671899f45f27c40a File:Sword Coast (Full).jpg 6 172 222 2022-05-12T15:56:56Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Neverwinter 0 173 223 2022-05-12T16:07:42Z Gingerdanger 2 Created page with "== History == == Districts == == Locations == == Important NPCs == == Trivia ==" wikitext text/x-wiki == History == == Districts == == Locations == == Important NPCs == == Trivia == ac7048d967105e2700be275e7253dddb074d0bdc 224 223 2022-05-12T16:08:29Z Gingerdanger 2 wikitext text/x-wiki {{Location|image=Neverwinter.jpg|imagecaption=Neverwinter|location=The Sword Coast}} == History == == Districts == == Locations == == Important NPCs == == Trivia == 58d1b6a07c2048b75faa9befdcb1aaee2e4e32f8 225 224 2022-05-12T16:08:48Z Gingerdanger 2 wikitext text/x-wiki {{Location|image=Neverwinter.jpg|imagecaption=Neverwinter|location=[[The Sword Coast]]}} == History == == Districts == == Locations == == Important NPCs == == Trivia == 8ef407ec0e80b0968dce4e2cc1142e468ec814c4 Phandalin 0 174 226 2022-05-12T16:09:41Z Gingerdanger 2 Created page with "== History == == Locations == == Important NPCs == == Trivia ==" wikitext text/x-wiki == History == == Locations == == Important NPCs == == Trivia == 9d888bb3bf58f3613327dd3452995abec0ccc9a4 227 226 2022-05-12T16:13:30Z Gingerdanger 2 wikitext text/x-wiki {{Location|image=Phandalin.jpg|imagecaption=Phandalin|location=[[The Sword Coast]]}} == History == == Locations == * Stonehill Inn * Barthen's Provisions * Shrine of Luck * Townmaster's Hall * Phandalin Miner's Exchange * Lionshield Coster == Important NPCs == * Townmaster Harbin Wester * Halia Thornton * Linene Graywind * Elmar Barthen * Smith Smithson == Trivia == dcc6b8ba7821fcbbb1ed852b5c87a1f9b18495a6 File:Phandalin.jpg 6 175 228 2022-05-12T16:10:59Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Courts of the Fey 0 176 229 2022-05-12T16:47:47Z Gingerdanger 2 Created page with "Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people li..." wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The Great Witch * The White Knight * The Banshee Queen * Oracle of Doom * Mistress of Midnight Teeth == The Court of Silver == 6e2256e95c486905ec03e8e37cd52478467da38d 230 229 2022-05-12T17:11:00Z Gingerdanger 2 /* The Court of Silver */ wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker The Court of Silver's relationship with the lesser Courts is unique. The Lord of Silver still does not have enough power to exert direct control, so there is a mutual understanding between the Court of Silver and its associated Courts === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper de51289b2d101f5936989719fede5e9abbe39c20 231 230 2022-05-13T15:49:40Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is '''The Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is '''The Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper bc91dc6a3def6c9b8ef05a9a14b64c40fb8b2f9f 232 231 2022-05-13T15:50:38Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is known as '''the Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is '''The Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper a1dff62551a237a330ca14c294d74f71b2466851 233 232 2022-05-13T15:51:22Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is known as '''the Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. <br /> === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper c70d729a455d604ff5ce81de7b7be2a9b6562f25 234 233 2022-05-13T15:55:29Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is known as '''the Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. <br /> === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper == Other Archfey == Though the majority of Archfey are tied to the Courts, there are many who drift freely from their rigid heirarchies. These archfey are usually very powerful, if fickle, and often claim relation to gods and deities. * The White Lady * The Name The Name a6e1a1324d5160a30423b4203e356cad983dd140 235 234 2022-05-13T15:57:15Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is known as '''the Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. <br /> === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper == Other Archfey == Though the majority of Archfey are tied to the Courts, there are many who drift freely from their rigid heirarchies. These archfey are usually very powerful, if fickle, and often claim relation to gods and deities. * The White Lady * The Name * * <br /> 734c6fc701f8a0d147e4d7cd2497e827e2f4c0da 236 235 2022-05-13T15:57:48Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * The Moonspeaker === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is known as '''the Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. <br /> === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper == Other Archfey == Though the majority of Archfey are tied to the Courts, there are many who drift freely from their rigid heirarchies. These archfey are usually very powerful, if fickle, and often claim relation to gods and deities. * The White Lady * The Name * Baba Yaga * The King of Dragonflies * The First Lord, Lord Thrumbolg <br /> 27dc95baf7230d1701d44d3efb6e46ef8ffee62c 237 236 2022-05-14T18:50:47Z Gingerdanger 2 wikitext text/x-wiki Many of the residents of the Feywild find themselves under the rule of one of the Courts: a hierarchy of fey and Archfey that hold power over the land itself and the people living within. == The Summer Court == One of the three central courts, the Summer Court is the court of the Seelie Fey, and is ruled by Queen Titania and Lord Oberon in Senaliesse. Its influence extends over the cities of Mithrendain and Shinelestra, and has ties to the city of Astrazalian. Other archfeys of the Summer Court include: * The Summer Queen, Queen Titania * The Green Lord, Lord Oberon * The Lord of Light * The Ildanach * Lord of the Hunt === Other Archfey === Some archfeys are not considered a part of the Court, though they may still hold close ties to either the Court as a whole, or to a particular archfey. These include: * The Lady of Starlight, Shandria === The Green Court === The Green Court, also known as the Spring Court, while loyal to the Summer Court, is a Court in and of itself. It is lead by the Maiden Monarch, and its seat of power is located in the Maze of Fathagn, where it presides over dryads, treants, and other creatures tied to nature. Other archfeys include: * Maiden Monarch * The Lord of Bats * The Unicorn Queen * The Infinite Branches == The Gloaming Court == The Gloaming Court is the Summer Court's equal and opposite as one of the three central courts of the Feywild. It is the court of the Unseelie Fey, and it is ruled solely by the Queen of Air and Darkness. Other archfey include: * The Queen of Air and Darkness, Queen Mab * Prince of Hearts * The White Knight * The Great Witch * Oracle of Doom * Mistress of Midnight Teeth === The Winter Court === The Winter Court is the most well-known under the Gloaming Court for many reasons, but not all of them are the right reasons. It was once ruled by the Prince of Frost, but during an exchange of power the Prince severed all ties with the Winter Court and Queen Mab. Now it is controlled by the Queen of Night and Magic, Queen Mab's daughter. * The Queen of Night and Magic * The Morrigan * The Snow Queen * The Banshee Queen === The Autumn Court === * The Pumpkin King * Prince of Hearts * The Ashen Lady * The Blight Lord == The Court of Silver == The Court of Silver is a relatively new addition to the Court of the Feywild, but rose to power in the last few centuries as a third major power to the Summer and Gloaming Courts. It presides over all Neutral Fey, those neither Seelie nor Unseelie, and is ruled by the Lord of Silver in Brokenstone. Other archfey include: * The Lord of Silver * Prince of Frost * The Nighthearth * The Mask of Seasons * === Other Archfey === While not an official part of the Court of Silver, there js another archfey that is considered directly tied to the Court. This archfey is known as '''the Shattered Sovereign''', who rules in the depths of Cendriane, though she is rarely outside her home. <br /> === The Court of Coral === Even beneath the sea, there are archfey who operate on their own agendas. These archfey form the Court of Coral, ruled by the Coral Crown, who agreed to ally themselves with the Court of Silver to avoid assimilation under the Summer and Gloaming Courts. In this way, the Court of Silver cannot exert direct control over the Court of Coral. * The Coral Crown * Lord of the Deep * Lady of the Lake * The River King * The Gatekeeper == Other Archfey == Though the majority of Archfey are tied to the Courts, there are many who drift freely from their rigid heirarchies. These archfey are usually very powerful, if fickle, and often claim relation to gods and deities. * The White Lady * The Name * Baba Yaga * The King of Dragonflies * The First Lord, Lord Thrumbolg <br /> b6f1a8f61754536a43ae6e9eaa8df2fb26f1b7de Thunder, Ice, and Everything Nice Wiki 0 2 12 11 2022-05-13T15:42:53Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpeg|link=The Banes of Thunder|[[The Banes of Thunder]] File:Placeholder|link=A Crucial Item| [[The Crown of Neverwinter]] File:Sword Coast.png|link=The Sword Coast| [[The Sword Coast]] File:Placeholder|link=A Main Character| [[Neverwinter]] File:Placeholder|link=An Important Location| [[The Feywild]] File:Placeholder|link=A Key Event| [[Courts of the Fey]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> <mainpage-rightcolumn-start /> ''Need help building out this community?'' *[[Project:Wiki rules|Rules of this wiki]] *[[w:c:community:Help:Getting Started|Getting Started]] *[[w:c:community:Help:Contributing|How to Contribute]] *[[w:c:community:Help:Community Management|Managing your new community]] *[[w:c:community:Help:Contents|Guides]] *[[w:c:community:Help:Index|All Help articles]] You can also be part of the larger Fandom family of communities. Visit [[w:c:community|Fandom's Community Central]]! ''Community Founders'': Write a good and paragraph-length description for your welcome section about your topic. Let your readers know what your topic is about and add some general information about it. Then you should visit [[Special:AdminDashboard|the admin dashboard for more tips]]. <mainpage-endcolumn /> [[Category:{{SITENAME}}]] [[Category:Settings]] f2142d2cc5c49109d9716c89bf30247c9085dd9b Template:Tl 10 353 601 2022-09-30T01:09:19Z m>Pppery 0 Redirected page to [[Template:Template link]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] fb9a6b420e13178e581af6e7d64274cd30a79017 Template:Template link 10 352 599 2022-09-30T01:10:00Z m>Pppery 0 46 revisions imported from [[:wikipedia:Template:Template_link]] wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Template:Documentation 10 5 587 15 2022-09-30T01:43:37Z m>MacFan4000 0 4 revisions imported from [[:meta:Template:Documentation]]: this is useful and was on templateiwki wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 9885bb4fa99bf3d5b960e73606bbb8eed3026877 Module:Arguments 828 348 591 2022-09-30T02:32:01Z m>Pppery 0 24 revisions imported from [[:wikipedia:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Documentation 828 349 593 2022-09-30T02:36:08Z m>Pppery 0 Pppery moved page [[Module:Documentation/2]] to [[Module:Documentation]] without leaving a redirect Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 78cc3a78f2b5dbb267fa16027c0800a22dbd3c42 Module:Userbox 828 363 623 2022-09-30T13:34:01Z m>Pppery 0 Let's not use [[Module:Category handler]] and its dependency web here please Scribunto text/plain -- This module implements {{userbox}}. local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args[2] or args['info-c'] or '#eeeeee' -- Get info values. data.info = args[4] or args.info or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args[8] or args['info-fc'] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt') data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt') data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('th') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize) :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('th') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize) :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local function has_text(wikitext) local function get_alt(text) return text:match("|alt=([^|]*)") or "" end wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt) return mw.text.trim(wikitext) ~= "" end return tostring(root) end function p.categories(args, page) -- Gets categories -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 if #cats > 0 and not require("Module:Yesno")(args.nocat) then -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.main = '[[Category:Pages with misplaced templates]]' if title.namespace == 2 then -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end return user elseif title.namespace == 10 then -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end return template end end end return p aac333efff739f0243d8ffced6f4296cffb8d7e9 Template:Infobox 10 178 575 2022-09-30T14:45:57Z m>Pppery 0 Copy from Wikipedia wikitext text/x-wiki {{#invoke:Infobox|infobox}}<noinclude> {{documentation}} </noinclude> 627ee6fcf4d4f108fe054b5c476201cad0ed7717 Module:Infobox 828 354 605 2022-09-30T14:52:23Z m>Pppery 0 Scribunto text/plain -- -- This module implements {{Infobox}} -- local p = {} local args = {} local origArgs = {} local root local function notempty( s ) return s and s:match( '%S' ) end local function fixChildBoxes(sval, tt) if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_musical_artist&oldid=849054481 -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end local function union(t1, t2) -- Returns the union of the values of two tables, as a sequence. local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end local function getArgNums(prefix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local function addRow(rowArgs) -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. if rowArgs.header and rowArgs.header ~= '_BLANK_' then root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :attr('id', rowArgs.rowid) :tag('th') :attr('colspan', 2) :attr('id', rowArgs.headerid) :addClass(rowArgs.class) :addClass(args.headerclass) :css('text-align', 'center') :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) elseif rowArgs.data then if not rowArgs.data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then rowArgs.rowstyle = 'display:none' end local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) row:attr('id', rowArgs.rowid) if rowArgs.label then row :tag('th') :attr('scope', 'row') :attr('id', rowArgs.labelid) :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') if not rowArgs.label then dataCell :attr('colspan', 2) :css('text-align', 'center') end dataCell :attr('id', rowArgs.dataid) :addClass(rowArgs.class) :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) end end local function renderTitle() if not args.title then return end root :tag('caption') :addClass(args.titleclass) :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end root :tag('tr') :tag('th') :attr('colspan', 2) :addClass(args.aboveclass) :css('text-align', 'center') :css('font-size', '125%') :css('font-weight', 'bold') :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end root :tag('tr') :tag('td') :attr('colspan', '2') :addClass(args.belowclass) :css('text-align', 'center') :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addRow({ data = args['subheader' .. tostring(num)], datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :cssText(args.captionstyle) :wikitext(caption) end addRow({ data = tostring(data), datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end local function preprocessRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end local function renderRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)], dataid = args['dataid' .. tostring(num)], labelid = args['labelid' .. tostring(num)], headerid = args['headerid' .. tostring(num)], rowid = args['rowid' .. tostring(num)] }) end end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'})) end end local function _infobox() -- Specify the overall layout of the infobox, with special settings -- if the infobox is used as a 'child' inside another infobox. if args.child ~= 'yes' then root = mw.html.create('table') root :addClass((args.subbox ~= 'yes') and 'infobox' or nil) :addClass(args.bodyclass) if args.subbox == 'yes' then root :css('padding', '0') :css('border', 'none') :css('margin', '-3px') :css('width', 'auto') :css('min-width', '100%') :css('font-size', '100%') :css('clear', 'none') :css('float', 'none') :css('background-color', 'transparent') else root :css('width', '22em') end root :cssText(args.bodystyle) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end renderSubheaders() renderImages() if args.autoheaders then preprocessRows() end renderRows() renderBelowRow() renderItalicTitle() return tostring(root) end local function preprocessSingleArg(argName) -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end local function preprocessArgs(prefixTable, step) -- Assign the parameters with the given prefixes to the args table, in order, in batches -- of the step size specified. This is to prevent references etc. from appearing in the -- wrong order. The prefixTable should be an array containing tables, each of which has -- two possible fields, a "prefix" string and a "depend" table. The function always parses -- parameters containing the "prefix" string, but only parses parameters in the "depend" -- table if the prefix parameter is present and non-blank. if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones. preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present and not blank, or -- we are processing "prefix1" and "prefix" is present and not blank, and -- if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end local function parseDataParameters() -- Parse the data parameters in the same order that the old {{infobox}} did, so that -- references etc. will display in the expected places. Parameters that depend on -- another parameter are only processed if that parameter is present, to avoid -- phantom references appearing in article reference lists. preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'}, {prefix = 'dataid'}, {prefix = 'labelid'}, {prefix = 'headerid'}, {prefix = 'rowid'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent preprocessSingleArg('decat') end function p.infobox(frame) -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end function p.infoboxTemplate(frame) -- For calling via #invoke within a template origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p c6ac51f9e2faf9c2f3aba1fb8c05af98db47f4d4 Template:En-WP attribution notice 10 360 617 2022-09-30T15:18:52Z m>Pppery 0 wikitext text/x-wiki <includeonly>{| style="border: 1px solid #e0e0e0; background-color: #f8f8f8; color:black; margin: 5px auto; width: 60%;" |- | style="padding: 3px 10px;" | [[File:Wikipedia-logo-v2.svg|30px|Wikipedia logo]] | style="font-size: 90%; padding: 3px;" | This page uses material from the Wikipedia page [[w:en:{{{1|{{FULLPAGENAME}}}}}|{{{1|{{FULLPAGENAME}}}}}]], which is released under the [[w:en:Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License|Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([https://en.wikipedia.org/w/index.php?title={{urlencode:{{{1|{{FULLPAGENAME}}}}}}}&action=history view authors]). |} [[Category:Pages from English Wikipedia‎]]</includeonly> <noinclude> {{documentation}} {{En-WP attribution notice|Template:En-WP attribution notice}} </noinclude> 22d054cdfdc01cc48994b02dc0ccde4265694650 Template:Infobox/doc 10 343 577 2022-09-30T19:09:06Z m>Pppery 0 wikitext text/x-wiki {{Documentation subpage}} This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[w:Help:Infobox]] contains an introduction about the recommended content and design of infoboxes. == Usage == Usage is similar to {{tl|navbox}}, but with an additional distinction. Each row on the table can contain either a header, or a label/data pair, or just a data cell. These are mutually exclusive states so if you define a row with both a header and a label/data pair, the label/data pair is ignored. To insert an image somewhere other than at the top of the infobox, or to insert freeform data, use a row with only a data field. == Optional control parameters == ; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox, pointing to the named page. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however this is rarely what you want, because it will send users clicking these links in an infobox in an article to the template code rather than the data in the infobox that they probably want to change. ; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it. ; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes". ; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it. == Content parameters == === Title === There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts as a caption it on top of the table. You can use both of them together if you like, or just one or the other, or even neither (though this is not recommended): ; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For accessibility reasons, this is the most recommended alternative. ; above : Text to put within the uppermost cell of the table. ; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images. Examples: {{Infobox | name = Infobox/doc | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} {{Infobox | name = Infobox/doc | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} === Illustration images === ; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. ; caption(n) : Text to put underneath the images. === Main data === ; header(n) : Text to use as a header in row n. ; label(n) : Text to use as a label in row n. ; data(n) : Text to display as data in row n. Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a header''(n)'' parameter will cause the corresponding data''(n)'' (and rowclass''(n)'' label''(n)'', see below) parameters to be ignored; the absence of a data''(n)'' parameters will cause the corresponding label''(n)'' parameters to be ignored. Valid combinations for any single row are: * |class''(n)''= |header''(n)''= * |rowclass''(n)'= |class''(n)''= |data''(n)''= * |rowclass''(n)''= |label''(n)''= |class''(n)''= data''(n)''= See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below. ==== Number ranges ==== To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example: <pre style="overflow:auto"> | header3 = Section 1 | label5 = Label A | data5 = Data A | label7 = Label C | data7 = Data C | header10 = Section 2 | label12 = Label D | data12 = Data D </pre>{{clear}} ==== Making data fields optional ==== A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so: <pre style="overflow:auto"> | label5 = Population | data5 = {{{population|}}} </pre>{{clear}} This way if an article doesn't define the population parameter in its infobox the row won't be displayed. For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'": <pre style="overflow:auto"> | label6 = Mass | data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }} </pre>{{clear}} For more on #if, see [[mw:Help:Extension:ParserFunctions##if|here]]. ==== Hiding headers when all data fields are hidden ==== You can also make headers optional in a similar way. Consider this example: {{Infobox | title = Example of an undesirable header | header1 = Undesirable header | label2 = Item 1 | data2 = | label3 = Item 2 | data3 = | label4 = Item 3 | data4 = | header5 = Static header | label6 = Static item | data6 = Static value }} <pre style="overflow:auto"> {{Infobox | title = Example of an undesirable header | header1 = Undesirable header | label2 = Item 1 | data2 = | label3 = Item 2 | data3 = | label4 = Item 3 | data4 = | header5 = Static header | label6 = Static item | data6 = Static value }} </pre>{{clear}} If you want the first header to appear only if one or more of the data fields that fall under it are filled, one could use the following pattern as an example of how to do it: {{Infobox | title = Example of an optional header | header1 = {{ #if: {{{item1|}}}{{{item2|}}}{{{item3|}}} | Optional header }} | label2 = Item 1 | data2 = {{{item1|}}} | label3 = Item 2 | data3 = {{{item2|}}} | label4 = Item 3 | data4 = {{{item3|}}} | header5 = Static header | label6 = Static item | data6 = Static value }} <pre style="overflow:auto"> {{Infobox | title = Example of an optional header | header1 = {{ #if: {{{item1|}}}{{{item2|}}}{{{item3|}}} | Optional header }} | label2 = Item 1 | data2 = {{{item1|}}} | label3 = Item 2 | data3 = {{{item2|}}} | label4 = Item 3 | data4 = {{{item3|}}} | header5 = Static header | label6 = Static item | data6 = Static value }} </pre>{{clear}} header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next static content. The trick to this is that the "#if" returns false only if there is nothing whatsoever in the conditional section, so only if all three of item1, item2 and item3 are undefined will the if statement fail. Note that such trick may be sometimes very complex to test if there are many data items whose value depends on complex tests (or when a data row is generated by a recursive invocation of this template as a [[#Subboxes|subbox]]). Ideally, the Lua module supporting this template should now support a new way to make each header row autohideable by detecting if there is at least one non-empty data row after that header row (a parameter like "autohide header1 = yes", for example, would remove the need to perform the "#if" test so that we can just to define "header1 = Optional header"), === Footer === ; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information. == Presentation parameters == === Italic titles === Titles of articles with infoboxes may be made italic by passing the <code>italic title</code> parameter. * Turn on italic titles by passing |italic title=<nowiki>{{{italic title|}}}</nowiki> from the infobox. * Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing |italic title=<nowiki>{{{italic title|no}}}</nowiki> * Do not make any titles italic by not passing the parameter at all. === CSS styling === ; bodystyle : Applies to the infobox table as a whole ; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox. ; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle. ; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future. ; captionstyle : Applies to the text of the image caption. ; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row. ; headerstyle : Applies to all header cells ; labelstyle : Applies to all label cells ; datastyle : Applies to all data cells ; belowstyle : Applies only to the below cell === HTML classes and microformats === ; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole. ; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption. <!-- currently not implemented in Lua module ; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on. --> ; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell. ; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on. ; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''. ; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on. ; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''. ; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells. ; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect. <!-- currently not implemented in Lua module ; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on. --> ; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell. This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others beig used for microformats. To flag an infobox as containing [[w:hCard|hCard]] information, for example, add the following parameter: <pre style="overflow:auto"> | bodyclass = vcard </pre>{{clear}} And for each row containing a data cell that's part of the vcard, add a corresponding class parameter: <pre style="overflow:auto"> | class1 = fn | class2 = org | class3 = tel </pre>{{clear}} ...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox. See [[w:microformat]] for more information on microformats in general. == Examples == Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell : {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} <pre style="overflow:auto"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = | image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} </pre>{{clear}} For this example, the '''bodystyle''' and '''labelstyle''' parameters are used to adjust the infobox width and define a default width for the column of labels: {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} <pre style="overflow: auto"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} </pre>{{clear}} == Embedding == One infobox template can be embedded into another using the |child= parameter or the |embed= parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>. {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} or, {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note that omitting the |title= parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. == Subboxes == An alternative method for embedding is to use |subbox=yes, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table. {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} <source lang="sass" style="overflow:auto"> {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} </source>{{clear}} Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes. == Full blank syntax == (Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.) <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | bodystyle = | titlestyle = | abovestyle = | subheaderstyle = | title = | above = | subheader = | imagestyle = | captionstyle = | image = | caption = | image2 = | caption2 = | headerstyle = | labelstyle = | datastyle = | header1 = | label1 = | data1 = | header2 = | label2 = | data2 = | header3 = | label3 = | data3 = | header4 = | label4 = | data4 = | header5 = | label5 = | data5 = | header6 = | label6 = | data6 = | header7 = | label7 = | data7 = | header8 = | label8 = | data8 = | header9 = | label9 = | data9 = | header10 = | label10 = | data10 = | header11 = | label11 = | data11 = | header12 = | label12 = | data12 = | header13 = | label13 = | data13 = | header14 = | label14 = | data14 = | header15 = | label15 = | data15 = | header16 = | label16 = | data16 = | header17 = | label17 = | data17 = | header18 = | label18 = | data18 = | header19 = | label19 = | data19 = | header20 = | label20 = | data20 = | belowstyle = | below = }} </pre>{{clear}} ==See also== * [[Module:Infobox]], the [[mw:Lua/Overview|Lua]] module on which this template is based * [[w:Wikipedia:List of infoboxes|List of infoboxes]] 38686ab37d436b2158042649ea6e552897fbcfa5 Module:Yesno 828 359 615 2022-10-01T17:25:37Z m>Pppery 0 Pppery moved page [[Module:Yesno/2]] to [[Module:Yesno]] without leaving a redirect Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:No globals 828 358 613 2022-10-01T17:28:48Z m>Pppery 0 Pppery moved page [[Module:No globals/2]] to [[Module:No globals]] without leaving a redirect Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Documentation/config 828 350 595 2022-10-01T17:37:53Z m>Pppery 0 Pppery moved page [[Module:Documentation/config/2]] to [[Module:Documentation/config]] without leaving a redirect Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 Template:Documentation subpage 10 347 589 2022-10-01T17:51:17Z m>Pppery 0 wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = '''This is a documentation subpage''' for '''{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br/> It contains usage information, [[mw:Help:Categories|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} | page}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 471e685c1c643a5c6272e20e49824fffebad0448 Template:User github 10 361 619 2022-10-04T16:14:11Z m>MirahezeGDPR a51581232c7cc84ec1a32c40d8489548 0 More consistent with other userboxes + this is only supposed to be for accounts wikitext text/x-wiki {{Userbox | id = [[File:GitLogo.png|43px]] | float = {{{float|right}}} | border-c = #808080 | id-c = #FFFFFF | info-c = #DBDBDB | info = {{#if:{{{username|}}}|''{{PAGENAME}}''|This user}} has an account on GitHub{{#if:{{{account|}}}|&#32;as ''[[github:{{{account}}}|{{{account}}}]]''|}}. | nocat = {{{nocat|}}} | usercategory = Users who use GitHub }}<noinclude>{{Documentation}}[[Category:Social media userboxes|{{PAGENAME}}]]</noinclude> 08ef531d5b5a1e69b84939e0fc1f1d0d622f38ad Template:GitBox 10 364 625 2022-10-05T20:45:15Z m>Pppery 0 Rm cat, don't think redirects need to be categorized here wikitext text/x-wiki #REDIRECT [[Template:User github]] 5619080886a72031f4953c16bc7715c10fe18e26 Template:Userbox 10 362 621 2022-10-05T21:25:59Z m>Pppery 0 Already on doc wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude>{{documentation}}</noinclude> 6813e8e31cadc62df2379b5fae9ea23c23f29e97 Template:Infobox Miraheze user/doc 10 345 581 2022-10-21T03:04:11Z m>MirahezeGDPR a51581232c7cc84ec1a32c40d8489548 0 /* Example */ Guessing this was imported from Wikipedia.. but Miraheze didn't exist in 2007 so updating wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE. --> == Usage == Copy and paste the template below. All parameters are optional. Parameter names '''must''' be in lower case. {{Infobox Miraheze user <!-- INFOBOX FORMATTING --------> | abovecolor = | color = | fontcolor = | abovefontcolor = | headerfontcolor = | tablecolor = <!-- LEAD INFORMATION ----------> | status = {{{status}}} | image = Echo_thanks.svg | image_caption = {{{image_caption}}} | honorific_prefix = {{{honorific_prefix}}} | name = {{{name}}} | honorific_suffix = {{{honorific_suffix}}} | role = {{{role}}} | birthname = {{{birthname}}} | real_name = {{{real_name}}} | gender = {{{gender}}} | custom_gender = {{{custom_gender}}} | pronoun = {{{pronoun}}} | languages = {{{languages}}} | birthdate = {{{birthdate}}} | birthplace = {{{birthplace}}} | location = {{{location}}} | country = {{{country}}} | timezone = {{{timezone}}} | current_time = {{{current_time}}} | nationality = {{{nationality}}} | ethnicity = {{{ethnicity}}} | race = {{{race}}} | height = {{{height}}} | weight = {{{height}}} | hair = {{{hair}}} | eyes = {{{eyes}}} | handedness = {{{handedness}}} | blood_type = {{{blood_type}}} | sexuality = {{{sexuality}}} | iq = {{{iq}}} | personality_type = {{{personality_type}}} | alignment = {{{alignment}}} <!-- FAMILY & FRIENDS ----------> | marital status = {{{marital status}}} | spouse = {{{spouse}}} | girlfriend = {{{girlfriend}}} | boyfriend = {{{boyfriend}}} | parents = {{{parents}}} | children = {{{children}}} | siblings = {{{siblings}}} | pets = {{{pets}}} <!-- EDUCATION & EMPLOYMENT ----> | occupation = {{{occupation}}} | employer = {{{employer}}} | education = {{{education}}} | primaryschool = {{{primaryschool}}} | intschool = {{{intschool}}} | highschool = {{{highschool}}} | college = {{{college}}} | university = {{{university}}} | classes = {{{classes}}} <!-- INTERESTS & BELIEFS -------> | hobbies = {{{hobbies}}} | religion = {{{religion}}} | politics = {{{politics}}} | aliases = {{{aliases}}} | movies = {{{movies}}} | shows = {{{shows}}} | books = {{{books}}} | interests = {{{interests}}} <!-- CONTACT INFO --------------> | website = {{{website}}} | blog = {{{blog}}} | email = {{{email}}} | icq = {{{icq}}} | aim = {{{aim}}} | gtalk = {{{gtalk}}} | jabber = {{{jabber}}} | skype = {{{skype}}} | msn = {{{msn}}} | yahoo = {{{yahoo}}} | mac = {{{mac}}} | irc = {{{irc}}} | facebook = {{{facebook}}} | google+ = {{{google+}}} | instagram = {{{instagram}}} | linkedin = {{{linkedin}}} | myspace = {{{myspace}}} | pinterest = {{{pinterest}}} | twitter = {{{twitter}}} | youtube = {{{youtube}}} | flickr = {{{flickr}}} <!-- SUBPAGES -----------------> | subpages = {{{subpages}}} <!-- ACCOUNT STATISTICS -------> | joined_date = {{{joined_date}}} | first_edit = {{{first_edit}}} | autoconfirmed = {{{autoconfirmed}}} | edit_count = {{{edit_count}}} | permissions = {{{permissions}}} | signature = {{{signature}}} <!-- USERBOXES ----------------> | userboxes = {{{userboxes}}} <!-- CUSTOM FIELDS ------------> | custom_header = {{{custom_header}}} | custom_data = {{{custom_data}}} | custom_label1 = {{{custom_label1}}} | custom_data1 = {{{custom_data1}}} | custom_label2 = {{{custom_label2}}} | custom_data2 = {{{custom_data2}}} | custom_label3 = {{{custom_label3}}} | custom_data3 = {{{custom_data3}}} | custom_label4 = {{{custom_label4}}} | custom_data4 = {{{custom_data4}}} | custom_label5 = {{{custom_label5}}} | custom_data5 = {{{custom_data5}}} | custom_label6 = {{{custom_label6}}} | custom_data6 = {{{custom_data6}}} | custom_label7 = {{{custom_label7}}} | custom_data7 = {{{custom_data7}}} | custom_label8 = {{{custom_label8}}} | custom_data8 = {{{custom_data8}}} | custom_label9 = {{{custom_label9}}} | custom_data9 = {{{custom_data9}}} }} <pre style="overflow: auto"> {{Infobox Miraheze user <!-- INFOBOX FORMATTING --------> | abovecolor = | color = | fontcolor = | abovefontcolor = | headerfontcolor = | tablecolor = <!-- LEAD INFORMATION ----------> | title = <!-- optional, defaults to {{BASEPAGENAME}} --> | status = | image = | image_caption = | image_width = | name = | birthname = | real_name = | gender = <!-- used to display icon at top. Supports male, female, other, or a custom value. --> | custom_gender = <!-- used to display "Gender" field in list --> | pronoun = | languages = | birthdate = | birthplace = | location = | country = | timezone = | current_time = <!-- example for San Francisco: {{current time|UTC-8}} --> | nationality = | ethnicity = | race = | height = | weight = | hair = | eyes = | handedness = | blood_type = | sexuality = | iq = | personality_type = | alignment = <!-- FAMILY & FRIENDS ----------> | marital status = | spouse = | girlfriend = | boyfriend = | children = | siblings = | parents = | pets = <!-- EDUCATION & EMPLOYMENT ----> | occupation = | employer = | education = | primaryschool = | intschool = | highschool = | college = | university = | classes = <!-- For use with Miraheze Campus Ambassadors --> <!-- INTERESTS & BELIEFS -------> | hobbies = | religion = | politics = | aliases = | movies = | shows = | books = | interests = <!-- CONTACT INFO --------------> | website = <!-- {{URL|example.com}} --> | blog = <!-- {{URL|example.com}} --> | email = <!-- {{no spam|account|example.com}} --> | icq = | aim = | gtalk = | jabber = | skype = | msn = | yahoo = | mac = | irc = | facebook = | google+ = | instagram = | linkedin = | myspace = | pinterest = | twitter = | youtube = | flickr = <!-- SUBPAGES -----------------> | subpages = <!-- ACCOUNT STATISTICS -------> | joined_date = | first_edit = | autoconfirmed = <!-- overrides confirmed parameter --> | confirmed = <!-- may be used in place of autoconfirmed parameter (displays "Confirmed" as label) --> | edit_count = | permissions = | signature = <!-- USERBOXES ----------------> | userboxes = <!-- CUSTOM FIELDS ------------> | custom_header = | custom_data = | custom_label1 = | custom_data1 = | custom_label2 = | custom_data2 = | custom_label3 = | custom_data3 = | custom_label4 = | custom_data4 = | custom_label5 = | custom_data5 = | custom_label6 = | custom_data6 = | custom_label7 = | custom_data7 = | custom_label8 = | custom_data8 = | custom_label9 = | custom_data9 = }} </pre> {{clear}} ==Example== {{Infobox Miraheze user | name = Miraheze user | birthdate = January 1, 1986 | birthplace = Dearborn, MI | country = United States | nationality = American | race = Caucasian | gender = Female | location = Houghton, MI | eyes = Brown | blood_type = Type O | sexuality = Heterosexual | iq = 136 | height = 5'8" | weight = 116 lbs. | timezone = Central Time Zone | pets = 2 dogs <!-- If you are supposed to put pet names, please fix this--> | children = 1 | marital status = Married | occupation = Clerk | highschool = Dearborn High School | college = Henry Ford Community College | hobbies = Camping, cooking | religion = Presbyterian]] | politics = Democrat | movies = Forrest Grump, Avatar | shows = Friends, The Big Bang Theory | books = Harry Potter | interests = History, Computers, Engineering | joined_date = June 3, 2007 | userboxes = {{GitBox}} }} <!-- Please add more to the above --> <pre style="overflow: auto"> {{Infobox Miraheze user | name = Miraheze user | birthdate = January 1, 1986 | birthplace = Dearborn, MI | country = United States | nationality = American | race = Caucasian | gender = Female | location = Houghton, MI | eyes = Brown | blood_type = Type O | sexuality = Heterosexual | iq = 136 | height = 5'8" | weight = 116 lbs. | timezone = Central Time Zone | pets = 2 dogs | children = 1 | marital status = Married | occupation = Clerk | highschool = Dearborn High School | college = Henry Ford Community College | hobbies = Camping, cooking | religion = Presbyterian]] | politics = Democrat | movies = Forrest Grump, Avatar | shows = Friends, The Big Bang Theory | books = Harry Potter | interests = History, Computers, Engineering | joined_date = June 3, 2021 | userboxes = {{GitBox}} }} </pre> {{clear}} == TemplateData == <templatedata> { "description": "Infobox about yourself. This template should only be used on user pages.", "params": { "status": { "label": "Status" }, "image_caption": { "label": "Image caption" }, "honorific_prefix": { "label": "Honorific Prefix" }, "name": { "label": "Name" }, "honorific_suffix": { "label": "Honorific Suffix" }, "role": { "label": "Role" }, "birthname": { "label": "Birth name" }, "real_name": { "label": "Real name" }, "gender": { "label": "Gender" }, "custom_gender": { "label": "Custom gender" }, "pronoun": { "label": "Preferred pronoun" }, "languages": { "label": "Language" }, "birthdate": { "label": "Birthdate" }, "birthplace": { "label": "Birthplace" }, "location": { "label": "Location" }, "country": { "label": "Country" }, "timezone": { "label": "Timezone" }, "current_time": { "label": "Current Time" }, "nationality": { "label": "Nationality" }, "ethnicity": { "label": "Ethnicity" }, "race": { "label": "Race" }, "height": { "label": "Height" }, "weight": { "label": "Weight" }, "hair": { "label": "Hair" }, "eyes": { "label": "Eyes" }, "handedness": { "label": "Handedness" }, "blood_type": { "label": "Blood Type" }, "sexuality": { "label": "Sexuality" }, "iq": { "label": "IQ" }, "personality_type": { "label": "Personality Type" }, "alignment": { "label": "Alignment" }, "marital status": { "label": "Marital Status" }, "spouse": { "label": "Spouse" }, "girlfriend": { "label": "Girlfriend" }, "boyfriend": { "label": "Boyfriend" }, "parents": { "label": "Parents" }, "children": { "label": "Children" }, "siblings": { "label": "Siblings" }, "pets": { "label": "Pets" }, "occupation": { "label": "Occupation" }, "employer": { "label": "Employer" }, "education": { "label": "Education" }, "primaryschool": { "label": "Primary School" }, "intschool": { "label": "Intermediate School" }, "highschool": { "label": "High School" }, "college": { "label": "College" }, "university": { "label": "University" }, "classes": { "label": "Classes" }, "hobbies": { "label": "Hobbies" }, "religion": { "label": "Religion" }, "politics": { "label": "Politics" }, "aliases": { "label": "Aliases" }, "movies": { "label": "Movies" }, "shows": { "label": "Shows" }, "books": { "label": "Books" }, "interests": { "label": "Interests" }, "website": { "label": "Website" }, "blog": { "label": "Blog" }, "email": { "label": "Email" }, "icq": { "label": "ICQ" }, "aim": { "label": "AIM" }, "gtalk": { "label": "GTalk" }, "jabber": { "label": "Jabber" }, "skype": { "label": "Skype" }, "msn": { "label": "MSN" }, "yahoo": { "label": "Yahoo" }, "mac": { "label": "Mac" }, "irc": { "label": "IRC" }, "facebook": { "label": "Facebook" }, "google+": { "label": "Google+" }, "instagram": { "label": "Instagram" }, "linkedin": { "label": "LinkedIn" }, "pinterest": { "label": "Pinterest" }, "twitter": { "label": "Twitter" }, "youtube": { "label": "YouTube" }, "flickr": { "label": "Flickr" }, "subpages": { "label": "Subpages" }, "joined_date": { "label": "Joined Date" }, "first_edit": { "label": "First Edit" }, "admin": { "label": "Date granted sysop" }, "bureaucrat": { "label": "Date granted bureaucrat" }, "edit_count": { "label": "Edit Count" }, "permissions": { "label": "Permissions" }, "signature": { "label": "Signature" }, "userboxes": { "label": "User boxes" } } } </templatedata> e5cb5aa9d7358ffc1e186b327fc6688f7a35e2dc Module:Message box 828 356 609 2022-10-21T19:39:49Z m>Pppery 0 These can just go, the first for being very Wikipedia-specific, and the second for being almost impossible to import properly Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local templatestyles = 'Module:Message box/styles.css' -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) and not self.isSmall then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end local function templatestyles(frame, src) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. 'CONFIG_MODULE' end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) be00cd389f9f2afcd361e5d5e33622839555cbd9 Template:Para 10 365 627 2022-10-21T19:52:33Z m>Pppery 0 wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 7be5bee75307eae9342bbb9ff3a613e93e93d5a7 Module:Message box/configuration 828 357 611 2022-10-21T22:38:02Z m>Pppery 0 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix'}, }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } c6bd9191861b23e474e12b19c694335c4bc3af5f Template:Mbox 10 355 607 2022-10-21T23:02:23Z m>Pppery 0 Reverted edits by [[Special:Contributions/Pppery|Pppery]] ([[User talk:Pppery|talk]]) to last revision by [[User:wikipedia>Amorymeltzer|wikipedia>Amorymeltzer]] wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c262e205f85f774a23f74119179ceea11751d68e Template:Infobox Miraheze user 10 344 579 2022-12-16T04:52:50Z m>Pppery 0 wikitext text/x-wiki {{Infobox | bodyclass = vcard | bodystyle = {{#if:{{{fontcolor|}}}|color: {{{fontcolor}}};}} {{#if:{{{width|}}}|width: {{{width}}};}} {{#if:{{{tablecolor|}}}|background-color: {{{tablecolor}}}}} | headerstyle = {{#if:{{{color|}}}|background-color: {{{color}}}}}; {{#if:{{{headerfontcolor|}}}|color: {{{headerfontcolor}}}}} | abovestyle = {{#if:{{{abovecolor|}}}|background-color: {{{abovecolor}}}|}}; {{#if:{{{abovefontcolor|}}}|color: {{{abovefontcolor}}}|}} | title = <includeonly>{{#if:{{{abovefontcolor|}}}||{{{title|{{BASEPAGENAME}}}}} {{#if:{{{status|}}}|<br /><small>{{{status}}}</small>}}}}</includeonly> | above = {{#if:{{{abovefontcolor|}}}|{{{title|{{BASEPAGENAME}}}}} {{#if:{{{status|}}}|<br /><small>{{{status}}}</small>}}}} | subheader = —&nbsp;<span class="role">{{#if:{{{role|}}}|{{{role}}}|[[:metawiki:|Mirahezian]]}}</span>&nbsp;{{#switch:{{lc:{{{gender|{{Gender:{{#titleparts:{{BASEPAGENAME}}|1}}|m|f|NONE}}}}}}}|male|m=<abbr class="gender" style="font-size: larger;" title="<nowiki>male</nowiki>">&#9794;</abbr>[[Category:Male Mirahezians]]&nbsp;|female|f=<abbr class="gender" style="font-size: larger;" title="<nowiki>female</nowiki>">&#9792;</abbr>[[Category:Female Mirahezians]]&nbsp;|other|o=<abbr class="gender" title="<nowiki>other gender</nowiki>"><span style="line-height: 12px;">[[File:Gendersign.svg|x12px|alt=other gender|link=]]</span></abbr>&nbsp;||none=|#default=<span style="line-height: 12px;">[[File:Gendersign.svg|x12px|alt={{{gender}}}|link=]]</span></abbr>&nbsp;}} | image = {{#if:{{{image|}}}|[[File:{{{image|}}}|{{{image_width|238px}}}|{{{image_caption|}}}]]}} | caption = {{{image_caption|}}} | label1 = Name | data1 = {{#if:{{{honorific prefix|{{{honorific_prefix|}}}}}}|<span class="honorific-prefix">{{{honorific prefix|{{{honorific_prefix|}}}}}}&nbsp;</span>}}{{#if:{{{name|}}}|<includeonly><span class="fn">{{{name|}}}</span></includeonly>}}{{#if:{{{honorific suffix|{{{honorific_suffix|}}}}}}|&nbsp;<span class="honorific-suffix">{{{honorific suffix|{{{honorific_suffix|}}}}}}</span>}} | label2 = Born | data2 = {{#if:{{{birthname|{{{birth_name|}}}}}}|<span class="nickname">{{{birthname|{{{birth_name}}}}}}</span>}} {{{birthdate|{{{birth_date|}}}}}} {{#if:{{{birthplace|{{{birth_place|}}}}}}|<span class="birthplace">{{{birthplace|{{{birth_place}}}}}}</span>}} | label3 = Name in real life | data3 = {{{real_name|}}} | class3 = nickname | label4 = Gender | data4 = {{{custom_gender|}}} | label5 = Preferred pronoun | data5 = {{{pronoun|}}} | label6 = Nationality | data6 = {{{nationality|}}} | class6 = category | label7 = Country | data7 = {{ucfirst:{{{country|}}}}} | label8 = Current&nbsp;location | data8 = {{{location|}}} | class8 = label | label9 = Languages | data9 = {{{languages|}}} | class9 = category | label10 = Time&nbsp;zone | data10 = {{{timezone|}}} | label11 = Current&nbsp;time | data11 = {{{current_time|}}} | label13 = Ethnicity | data13 = {{{ethnicity|}}} | class13 = category | label14 = Race | data14 = {{{race|}}} | class14 = category | label15 = Height | data15 = {{{height|}}} | label16 = Weight | data16 = {{{weight|}}} | label17 = Hair | data17 = {{{hair|}}} | label18 = Eyes | data18 = {{{eyes|}}} | label19 = [[w:Handedness|Handedness]] | data19 = {{{handedness|}}} | label20 = [[w:Blood type|Blood&nbsp;type]] | data20 = {{{blood_type|}}} | label21 = Sexuality | data21 = {{{sexuality|}}} | class21 = category | label22 = [[w:Intelligence quotient|IQ]] | data22 = {{{iq|}}} | label23 = [[w:Myers–Briggs Type Indicator|Personality&nbsp;type]] | data23 = {{{personality_type|}}} | class23 = category | label24 = {{#switch:{{lc:{{{alignment|}}}}}|lawful good|neutral good|chaotic good|lawful neutral|neutral|true neutral|chaotic neutral|lawful evil|neutral evil|chaotic evil=[[w:Alignment (Dungeons & Dragons)|Alignment]]|light side|lightside|light|jedi|dark side|darkside|dark|sith=[[w:Alignment (role-playing games)#Star Wars|Alignment]]|#default=[[w:Alignment (role-playing games)|Alignment]]}} | data24 = {{#switch:{{lc:{{{alignment|}}}}}|lawful good|neutral good|chaotic good|lawful neutral|neutral|true neutral|chaotic neutral|lawful evil|neutral evil|chaotic evil=[[{{{alignment|}}}]]|light side|lightside|light|jedi=[[w:Force (Star Wars)|Light Side]]|dark side|darkside|dark|sith=[[w:Dark side (Star Wars)|Dark Side]]|#default={{{alignment|}}}}} | class24 = category | header25 = {{#if:{{{marital status|}}}{{{spouse|}}}{{{girlfriend|}}}{{{boyfriend|}}}{{{children|}}}{{{siblings|}}}{{{pets|}}}|Family and friends}} | label26 = Marital&nbsp;status | data26 = {{{marital status|}}} | class26 = category | label27 = Spouse | data27 = {{{spouse|{{{partner|}}}}}} | label28 = Girlfriend | data28 = {{{girlfriend|}}} | label29 = Boyfriend | data29 = {{{boyfriend|}}} | label30 = Children | data30 = {{{children|}}} | label31 = Siblings | data31 = {{{siblings|}}} | label32 = Parents | data32 = {{{parents|}}} | label33 = Pets | data33 = {{{pets|}}} | header34 = {{#if:{{{occupation|}}}{{{employer|}}}{{{education|}}}{{{college|}}}{{{university|}}}{{{highschool|}}}|Education and employment}} | label35 = Occupation | data35 = {{{occupation|}}} | class35 = role | label36 = Employer | data36 = {{{employer|}}} | class36 = org | label37 = Education | data37 = {{{education|}}} | label38 = Primary school | data38 = {{{primaryschool|}}} | label39 = Intermediate school | data39 = {{{intschool|}}} | label40 = High school | data40 = {{{highschool|}}} | label41 = College | data41 = {{{college|}}} | label42 = University | data42 = {{{university|}}} | label43 = Classes | data43 = {{{classes|}}} | header44 = {{#if:{{{hobbies|}}}{{{religion|}}}{{{politics|}}}{{{aliases|}}}{{{movies|}}}{{{books|}}}|Hobbies, favourites and beliefs}} | label45 = Hobbies | data45 = {{{hobbies|}}} | label46 = Religion | data46 = {{{religion|}}} | class46 = category | label47 = Politics | data47 = {{{politics|}}} | label48 = [[w:Pseudonym|Aliases]] | data48 = {{{aliases|}}} | class48 = nickname | label49 = Movies | data49 = {{{movies|}}} | label50 = Shows | data50 = {{{shows|}}} | label51 = Books | data51 = {{{books|}}} | header52 = {{#if:{{{interests|}}}|Interests}} | data53 = {{#if:{{{interests|}}}|<div style="text-align: left"> {{{interests|}}} </div>}} | header54 = {{#if:{{{website|}}}{{{blog|}}}{{{email|}}}{{{icq|}}}{{{aim|}}}{{{gtalk|}}}{{{jabber|}}}{{{skype|}}}{{{mac|}}}{{{irc|}}}{{{facebook|}}}{{{google+|}}}{{{instagram|}}}{{{linkedin|}}}{{{myspace|}}}{{{pinterest|}}}{{{twitter|}}}{{{youtube|}}}{{{flickr|}}}|Contact info}} | label55 = Website | data55 = {{{website|}}} | label56 = Blog | data56 = {{{blog|}}} | label57 = Email | data57 = {{{email|}}} | label58 = [[w:ICQ|ICQ]] | data58 = {{#if:{{{icq|}}}|[https://people.icq.com/people/about_me.php?uin={{urlencode:{{{icq}}}}} {{{icq}}}]}} | label59 = [[w:AOL Instant Messenger|AIM]] | data59 = {{{aim|}}} | label60 = [[w:GTalk|GTalk]] | data60 = {{{gtalk|}}} | label61 = [[w:Extensible Messaging and Presence Protocol|XMPP]] | data61 = {{{jabber|}}} | label62 = [[w:Skype|Skype]] | data62 = {{{skype|}}} | label63 = .Mac | data63 = {{{mac|}}} | label64 = [[w:IRC|IRC]] | data64 = {{{irc|}}} | label65 = [[w:Facebook|Facebook]] | data65 = {{#if:{{{facebook|}}}|[https://www.facebook.com/{{urlencode:{{{facebook}}}}} {{{facebook}}}]}} | label67 = [[w:Instagram|Instagram]] | data67 = {{#if:{{{instagram|}}}|[https://www.instagram.com/{{urlencode:{{{instagram}}}}} {{{instagram}}}]}} | label68 = [[w:LinkedIn|LinkedIn]] | data68 = {{#if:{{{linkedin|}}}|[https://www.linkedin.com/profile/view?&name={{urlencode:{{{linkedin}}}}} {{{linkedin}}}]}} | label69 = [[w:Myspace|Myspace]] | data69 = {{{myspace|}}} | label70 = [[w:Pinterest|Pinterest]] | data70 = {{{pinterest|}}} | label71 = [[w:Twitter|Twitter]] | data71 = {{#if:{{{twitter|}}}|[https://twitter.com/{{urlencode:{{{twitter}}}}} {{{twitter}}}]}} | label72 = [[w:YouTube|YouTube]] | data72 = {{#if:{{{youtube|}}}|[https://www.youtube.com/user/{{urlencode:{{{youtube}}}}} {{{youtube}}}]}} | label73 = [[w:Flickr|Flickr]] | data73 = {{#if:{{{flickr|}}}|[https://www.flickr.com/photos/{{urlencode:{{{flickr}}}}} {{{flickr}}}]}} | header74 = {{#if:{{{subpages|}}}|[[Special:Prefixindex/User:{{BASEPAGENAMEE}}|{{BASEPAGENAME}} subpages]]}} | data75 = {{#if:{{{subpages|}}}|<div style="text-align: left"> {{{subpages|}}} </div>}} | header76 = {{#if:{{{joined_date|}}}{{{first_edit|}}}{{{edit_count|}}}{{{permissions|}}}|Account statistics}} | label77 = Joined | data77 = {{{joined_date|}}} | label78 = First edit | data78 = {{{first_edit|}}} | label79 = {{#if:{{{autoconfirmed|}}}|{{#if:{{{confirmed|}}}|Confirmed<br />}}Autoconfirmed|{{#if:{{{confirmed|}}}|Confirmed}}}} | data79 = {{#if:{{{autoconfirmed|}}}|{{#if:{{{confirmed|}}}|{{{confirmed}}}<br />}}{{{autoconfirmed}}}|{{#if:{{{confirmed|}}}|{{{confirmed}}}}}}} | label90 = Administrator | data90 = {{{admin|}}} | label91 = Bureaucrat | data91 = {{{bureaucrat|}}} | label95 = {{#if:{{{permissions|}}}|<span class="plainlinks">[{{fullurl:Special:ListUsers|limit=1&username={{ROOTPAGENAMEE}}}} Permissions]</span>}} | data95 = {{{permissions|}}} | label98 = Signature | data98 = {{{signature|}}} | data101 = {{{module|}}} | data102 = {{{module2|}}} | data103 = {{{module3|}}} | header104 = {{#if:{{{userboxes|}}}|Userboxes}} | data105 = {{#if:{{{userboxes|}}}| <table style="background: transparent; vertical-align: middle !important; text-align: center; font-size: 95%; color: {{{fontcolor|#000000}}}; margin: auto; border-spacing: 0px; border-collapse: collapse;"> <tr><td> {{{userboxes|}}} </td></tr> </table> }} | header106 = {{{custom_header|}}} | data107 = {{#if:{{{custom_data|}}}|<div style="text-align: left"> {{{custom_data|}}} </div>}} | label111 = {{{custom_label1|}}} | data111 = {{{custom_data1|}}} | label112 = {{{custom_label2|}}} | data112 = {{{custom_data2|}}} | label113 = {{{custom_label3|}}} | data113 = {{{custom_data3|}}} | label114 = {{{custom_label4|}}} | data114 = {{{custom_data4|}}} | label115 = {{{custom_label5|}}} | data115 = {{{custom_data5|}}} | label116 = {{{custom_label6|}}} | data116 = {{{custom_data6|}}} | label117 = {{{custom_label7|}}} | data117 = {{{custom_data7|}}} | label118 = {{{custom_label8|}}} | data118 = {{{custom_data8|}}} | label119 = {{{custom_label9|}}} | data119 = {{{custom_data9|}}} }}<noinclude>{{Documentation}}{{En-WP attribution notice|Template:Infobox Wikipedia user}}</noinclude> 5c833d57c9e7f404beac918c3b0cae721506bd7f Module:Documentation/styles.css 828 351 597 2023-01-16T23:40:04Z m>Pppery 0 text text/plain .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 598 597 2023-11-02T21:46:36Z Gingerdanger 2 1 revision imported text text/plain .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 Template:If empty 10 366 629 2023-03-21T04:15:21Z m>Pppery 0 Rv wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#if:{{{1|}}} | {{{1}}} | {{{{{|safesubst:}}}#if:{{{2|}}} | {{{2}}} | {{{{{|safesubst:}}}#if:{{{3|}}} | {{{3}}} | {{{{{|safesubst:}}}#if:{{{4|}}} | {{{4}}} | {{{{{|safesubst:}}}#if:{{{5|}}} | {{{5}}} | {{{{{|safesubst:}}}#if:{{{6|}}} | {{{6}}} | {{{{{|safesubst:}}}#if:{{{7|}}} | {{{7}}} | {{{{{|safesubst:}}}#if:{{{8|}}} | {{{8}}} | {{{{{|safesubst:}}}#if:{{{9|}}} | {{{9}}} }} }} }} }} }} }} }} }} }}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> eeda2c13231e9a8b44d480e8c429d73652575009 630 629 2023-11-02T21:46:46Z Gingerdanger 2 1 revision imported wikitext text/x-wiki <includeonly>{{{{{|safesubst:}}}#if:{{{1|}}} | {{{1}}} | {{{{{|safesubst:}}}#if:{{{2|}}} | {{{2}}} | {{{{{|safesubst:}}}#if:{{{3|}}} | {{{3}}} | {{{{{|safesubst:}}}#if:{{{4|}}} | {{{4}}} | {{{{{|safesubst:}}}#if:{{{5|}}} | {{{5}}} | {{{{{|safesubst:}}}#if:{{{6|}}} | {{{6}}} | {{{{{|safesubst:}}}#if:{{{7|}}} | {{{7}}} | {{{{{|safesubst:}}}#if:{{{8|}}} | {{{8}}} | {{{{{|safesubst:}}}#if:{{{9|}}} | {{{9}}} }} }} }} }} }} }} }} }} }}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> eeda2c13231e9a8b44d480e8c429d73652575009 Template:Infobox character/doc 10 346 585 2023-03-21T04:33:54Z m>Pppery 0 wikitext text/x-wiki {{Documentation subpage}} '''Infobox character''' is used to create an infobox for a fictional character of any type. == Usage == The blank form immediately below shows the most commonly used fields, and complete instructions are listed further down the page. {{Infobox character | name = {{{name}}} | series = {{{series}}} | image = {{{image}}} | alt = {{{alt}}} | caption = {{{caption}}} | first_major = {{{first_major}}} | first_minor = {{{first_minor}}} | first_date = {{{first_date}}} | last_major = {{{last_major}}} | last_minor = {{{last_minor}}} | last_date = {{{last_date}}} | creator = {{{creator}}} | based_on = {{{based_on}}} | adapted_by = {{{adapted_by}}} | designer = {{{designer}}} | portrayer = {{{portrayer}}} | voice = {{{voice}}} | motion_actor = {{{motion_actor}}} | full_name = {{{full_name}}} | nickname = {{{nickname}}} | alias = {{{alias}}} | species = {{{species}}} | gender = {{{gender}}} | title = {{{title}}} | occupation = {{{occupation}}} | affiliation = {{{affiliation}}} | fighting_style = {{{fighting_style}}} | weapon = {{{weapon}}} | family = {{{family}}} | spouse = {{{spouse}}} | significant_other = {{{significant_other}}} | children = {{{children}}} | relatives = {{{relatives}}} | religion = {{{religion}}} | origin = {{{origin}}} | nationality = {{{nationality}}} }} <syntaxhighlight lang="html" style="overflow:auto">{{Infobox character | color = <!-- headers background color; the foreground color is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | image = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | first = <!-- Use instead of first_major= etc. when custom or complex formatting is needed. --> | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | last = <!-- Use instead of last_major= etc. when custom or complex formatting is needed. --> | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = }}</syntaxhighlight> == Parameters == All parameters are optional. {| class="wikitable" |- ! scope="col" | Parameter ! scope="col" | Notes |- ! scope="row" | color | Background color for header bars (default = #DEDEE2). The text color is automatically determined. Must meet AAA compliance standards outlines on [[WP:COLOR]]. |- ! scope="row" | name | Character name to display in top header (default = PAGENAME). |- ! scope="row" | series | Name of the series in which the character appears. |- ! scope="row" | franchise | Name of the fictional world or story in which the character appears. Does not italicize title. |- ! scope="row" | multiple | Set to yes if the infobox describes more than one character. |- ! scope="row" | image | Image of the character. "File:" and wikilinking is not required. i.e. use {{para|image|Example.png}}. |- ! scope="row" | image_upright | The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px. |- ! scope="row" | alt | Alt text for image |- ! scope="row" | caption | A caption explaining the image. |- ! scope="row" | first_major | The title of the major work the fictional element first appeared in. Major works include TV series, films, books, albums and games. |- ! scope="row" | first_minor | The title of the minor work the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions. |- ! scope="row" | first_issue | The number of the comic book issue the fictional element first appeared in. |- ! scope="row" | first_date | The date of the publication/release of the minor work where the fictional element first appeared in. |- ! scope="row" | last_major | The title of the major work the fictional element last appeared in. Major works include TV series, films, books, albums and games. |- ! scope="row" | last_minor | The title of the minor work the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions. |- ! scope="row" | last_issue | The number of the comic book issue the fictional element last appeared in. |- ! scope="row" | last_date | The date of the publication/release of the minor work where the fictional element last appeared in. |- ! scope="row" | first | First appearance of the character. |- ! scope="row" | firstgame | First appearance in a game of the character. |- ! scope="row" | last | Last appearance of the character. |- ! scope="row" | creator | Name of the individuals who are credited with the creation of the character. |- ! scope="row" | based_on | Name of the original character the adaptation is based on. Use this field in conjunction with {{para|adapted_by}}. |- ! scope="row" | adapted_by | Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character. |- ! scope="row" | designer | Name of the individuals who designed the character. |- ! scope="row" | portrayer | Name of the individuals who portrayed the character. |- ! scope="row" | voice | Name of the individuals who voiced the character. Should be omitted if the same as "portrayer". |- ! scope="row" | motion_actor | Name of the individuals who portrayed the character in motion capture. |- ! scope="row" | noinfo | Disable the first "In-universe information" header. |- ! scope="row" | info-hdr | Text for display in second header (default = Information). |- ! scope="row" | full_name | The character's full name. |- ! scope="row" | nickname/nicknames | Any nicknames used by the character. |- ! scope="row" | alias/aliases | Any aliases used by the character. |- ! scope="row" | species/race | The species or race of the character. Use for non-human characters only. |- ! scope="row" | gender | The gender of the character. Use only if not obvious. |- ! scope="row" | title | Titles the character was known by. |- ! scope="row" | occupation/position | The character's job or role. |- ! scope="row" | class | The character class for RPG characters. |- ! scope="row" | affiliation | The groups or teams the character belongs to. |- ! scope="row" | alignment | The character's Dungeons & Dragons alignment. |- ! scope="row" | fighting_style | The primary fighting styles used by the character. |- ! scope="row" | weapon | The types of weapons the character uses. |- ! scope="row" | family | The character's family members. |- ! scope="row" | spouse/spouses | The character's spouses. |- ! scope="row" | significant_other/significant_others | The character's significant others. |- ! scope="row" | children | The characters's children. |- ! scope="row" | relatives | The characters's relatives. |- ! scope="row" | religion | The character's religion. |- ! scope="row" | origin/home | The character's place of origin. |- ! scope="row" | nationality | The character's nationality. |- ! scope="row" | extra-hdr | Text for display in third header (default = No third header). |- ! scope="row" | lbl# | Label to display in left column where "#" is 1-5, 21-25, or 31-35 for custom fields under the 1st, 2nd, or 3rd headers respectively. |- ! scope="row" | data# | Text to display in the right column corresponding to the appropriate "lbl#". |} ===TemplateData=== <templatedata> { "description": "Creates an infobox for a fictional character of any type.", "params": { "color": { "label": "Color", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Background color for header bars (default = #DEDEE2). The text color is automatically computed. Must meet AAA compliance standards outlines on [[WP:COLOR]].", "aliases": [ "colour" ] }, "name": { "label": "Name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Character name to display in top header (default = PAGENAME)." }, "series": { "label": "Series", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the series in which the character appears." }, "franchise": { "label": "Franchise", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the fictional world or story in which the character appears. Does not italicize title." }, "multiple": { "label": "Multiple", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Set to yes if the infobox describes more than one character." }, "image": { "label": "Image", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Image of the character. \"File:\" and wikilinking is not required. i.e. use {{para|image|Example.png}}." }, "image_upright": { "label": "Image upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px." }, "alt": { "label": "Alt", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Alt text for image per [[WP:MOSALT]]." }, "caption": { "label": "Caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A caption explaining the image." }, "first_major": { "label": "First appearance major", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the major work the fictional element first appeared in. Major works include TV series, films, books, albums and games." }, "first_minor": { "label": "First appearance minor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the minor work the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions." }, "first_issue": { "label": "First appearance issue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The number of the comic book issue the fictional element first appeared in." }, "first_date": { "label": "First appearance date", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The date of the publication/release of the minor work where the fictional element first appeared in." }, "last_major": { "label": "Last appearance major", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the major work the fictional element last appeared in. Major works include TV series, films, books, albums and games." }, "last_minor": { "label": "Last appearance minor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the minor work the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions." }, "last_issue": { "label": "Last appearance issue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The number of the comic book issue the fictional element last appeared in." }, "last_date": { "label": "Last appearance date", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The date of the publication/release of the minor work where the fictional element last appeared in." }, "first": { "label": "First appearance", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "First appearance of the character." }, "firstgame": { "label": "First game", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "First appearance in a game of the character." }, "last": { "label": "Last appearance", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Last appearance of the character." }, "creator": { "label": "Creator", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who are credited with the creation of the character." }, "based_on": { "label": "Based on", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the original character the adaptation is based on. Use {{based on}} to add the title of original character and the names of the original creators. Use this field in conjunction with {{para|adapted_by}}." }, "adapted_by": { "label": "Adapted by", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character." }, "designer": { "label": "Designer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who designed the character." }, "portrayer": { "label": "Portrayer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who portrayed the character." }, "voice": { "label": "Voice actor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who voiced the character (if different from portrayer or there is no portrayer)" }, "motion_actor": { "label": "Motion actor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who portrayed the character in motion capture." }, "lbl1": { "label": "Label 1", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Label to display in left column for custom fields under the 1st header." }, "data1": { "label": "Data 1", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text to display in the right column corresponding to lbl1." }, "lbl2": { "label": "Label 2", "inherits": "lbl1" }, "data2": { "label": "Data 2", "description": "Text to display in the right column corresponding to lbl2.", "inherits": "data1" }, "lbl3": { "label": "Label 3", "inherits": "lbl1" }, "data3": { "label": "Data 3", "description": "Text to display in the right column corresponding to lbl3.", "inherits": "data1" }, "lbl4": { "label": "Label 4", "inherits": "lbl1" }, "data4": { "label": "Data 4", "description": "Text to display in the right column corresponding to lbl4.", "inherits": "data1" }, "lbl5": { "label": "Label 5", "inherits": "lbl1" }, "data5": { "label": "Data 5", "description": "Text to display in the right column corresponding to lbl5.", "inherits": "data1" }, "noinfo": { "label": "Disable second header", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Disable the first \"In-universe information\" header." }, "info-hdr": { "label": "Second header text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text for display in second header (default = Information)." }, "full_name": { "label": "Full name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's full name." }, "nickname": { "label": "Nickname", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A nickname used by the character. If there is more than one nickname, use {{para|nicknames}}." }, "nicknames": { "label": "Nicknames", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any nicknames used by the character. If there is only one nickname, use {{para|nickname}}." }, "alias": { "label": "Alias", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "An alias used by the character. If there is more than one alias, use {{para|aliases}}." }, "aliases": { "label": "Alias", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any aliases used by the character. If there is only one alias, use {{para|alias}}." }, "species": { "label": "Species", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The species of the character. Use for non-human characters only." }, "race": { "label": "Race", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The race of the character. Use for non-human characters only." }, "gender": { "label": "Gender", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The gender of the character. Use only if not obvious." }, "title": { "label": "Title", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Titles the character was known by." }, "occupation": { "label": "Occupation", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's job or role." }, "position": { "label": "Position", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's job or role." }, "class": { "label": "Class", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character class for RPG characters." }, "affiliation": { "label": "Affiliation", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The groups or teams the character belongs to." }, "alignment": { "label": "Alignment", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's Dungeons & Dragons alignment." }, "fighting_style": { "label": "Fighting style", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The primary fighting styles used by the character." }, "weapon": { "label": "Weapon", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The types of weapons the character uses." }, "family": { "label": "Family", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's family members." }, "spouse": { "label": "Spouse", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's spouses." }, "spouses": { "label": "Spouses", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's spouses." }, "significant_other": { "label": "Significant other", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's significant others. If there is more than one significant_other, use {{para|significant_others}}." }, "significant_others": { "label": "Significant others", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's significant others. If there is only one significant_other, use {{para|significant_other}}." }, "children": { "label": "Children", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The characters's children" }, "relatives": { "label": "Relatives", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The characters's relatives" }, "religion": { "label": "Religion", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's religion" }, "origin": { "label": "Origin", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's place of origin." }, "home": { "label": "Home", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's place of origin." }, "nationality": { "label": "Nationality", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's nationality." }, "lbl21": { "label": "Label 21", "description": "Label to display in left column for custom fields under the 2nd header.", "inherits": "lbl1" }, "data21": { "label": "Data 21", "description": "Text to display in the right column corresponding to lbl21.", "inherits": "data1" }, "lbl22": { "label": "Label 22", "inherits": "lbl21" }, "data22": { "label": "Data 22", "description": "Text to display in the right column corresponding to lbl22.", "inherits": "data1" }, "lbl23": { "label": "Label 23", "inherits": "lbl21" }, "data23": { "label": "Data 23", "description": "Text to display in the right column corresponding to lbl23.", "inherits": "data1" }, "lbl24": { "label": "Label 24", "inherits": "lbl21" }, "data24": { "label": "Data 24", "description": "Text to display in the right column corresponding to lbl24.", "inherits": "data1" }, "lbl25": { "label": "Label 25", "inherits": "lbl21" }, "data25": { "label": "Data 25", "description": "Text to display in the right column corresponding to lbl25.", "inherits": "data1" }, "extra-hdr": { "label": "Third header text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text for display in third header (default = No third header)." }, "lbl31": { "label": "Label 31", "description": "Label to display in left column for custom fields under the 3rd header.", "inherits": "lbl22" }, "data31": { "label": "Data 31", "description": "Text to display in the right column corresponding to lbl31.", "inherits": "data1" }, "lbl32": { "label": "Label 32", "inherits": "lbl31" }, "data32": { "label": "Data 32", "description": "Text to display in the right column corresponding to lbl32.", "inherits": "data1" }, "lbl33": { "label": "Label 33", "inherits": "lbl31" }, "data33": { "label": "Data 33", "description": "Text to display in the right column corresponding to lbl33.", "inherits": "data1" }, "lbl34": { "label": "Label 34", "inherits": "lbl31" }, "data34": { "label": "Data 34", "description": "Text to display in the right column corresponding to lbl34.", "inherits": "data1" }, "lbl35": { "label": "Label 35", "inherits": "lbl31" }, "data35": { "label": "Data 35", "description": "Text to display in the right column corresponding to lbl35.", "inherits": "data1" } }, "format": "block" } </templatedata> === All parameters (not for general use) === <pre>{{Infobox character | color = <!-- headers background colour; the foreground colour is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | multiple = | image = | image_upright = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | first = | firstgame = | last = | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | lbl1 = | data1 = | lbl2 = | data2 = | lbl3 = | data3 = | lbl4 = | data4 = | lbl5 = | data5 = | noinfo = | info-hdr = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = | lbl21 = | data21 = | lbl22 = | data22 = | lbl23 = | data23 = | lbl24 = | data24 = | lbl25 = | data25 = | extra-hdr = | lbl31 = | data31 = | lbl32 = | data32 = | lbl33 = | data33 = | lbl34 = | data34 = | lbl35 = | data35 = }}</pre> == Example == {{Infobox character | name = John Doe | series = [[Criminal Minds]] | image = | caption = | first_major = Criminal Minds | first_minor = Pilot | first_date = 2005 | last_major = Criminal Minds | last_minor = Last One | last_date = 2018 | creator = [[Agnes Nixon]] | portrayer = [[Soupy Sales]] | nickname = Doeboy | alias = Jack Dew | gender = Male | title = Detective | occupation = Law enforcement | family = Doe | spouse = Jane Doe | significant_other = | children = John Doe, Jr. | relatives = Phil Doe (father), Nancy Doe (mother) | religion = [[Christianity|Christian]] | nationality = American }} <syntaxhighlight lang="moin"> {{Infobox character | name = John Doe | series = [[Criminal Minds]] | image = | caption = | first_major = Criminal Minds | first_minor = Pilot | first_date = 2005 | last_major = Criminal Minds | last_minor = Last One | last_date = 2018 | creator = [[Agnes Nixon]] | portrayer = [[Soupy Sales]] | nickname = Doeboy | alias = Jack Dew | gender = Male | title = Detective | occupation = Law enforcement | family = Doe | spouse = Jane Doe | significant_other = | children = John Doe, Jr. | relatives = Phil Doe (father), Nancy Doe (mother) | religion = [[Christianity|Christian]] | nationality = American }} </syntaxhighlight> <includeonly> [[Category:Templates]] </includeonly> c3b5673c7b9ea096939919c0cf7da9d3440d78e7 586 585 2023-11-02T21:46:32Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{Documentation subpage}} '''Infobox character''' is used to create an infobox for a fictional character of any type. == Usage == The blank form immediately below shows the most commonly used fields, and complete instructions are listed further down the page. {{Infobox character | name = {{{name}}} | series = {{{series}}} | image = {{{image}}} | alt = {{{alt}}} | caption = {{{caption}}} | first_major = {{{first_major}}} | first_minor = {{{first_minor}}} | first_date = {{{first_date}}} | last_major = {{{last_major}}} | last_minor = {{{last_minor}}} | last_date = {{{last_date}}} | creator = {{{creator}}} | based_on = {{{based_on}}} | adapted_by = {{{adapted_by}}} | designer = {{{designer}}} | portrayer = {{{portrayer}}} | voice = {{{voice}}} | motion_actor = {{{motion_actor}}} | full_name = {{{full_name}}} | nickname = {{{nickname}}} | alias = {{{alias}}} | species = {{{species}}} | gender = {{{gender}}} | title = {{{title}}} | occupation = {{{occupation}}} | affiliation = {{{affiliation}}} | fighting_style = {{{fighting_style}}} | weapon = {{{weapon}}} | family = {{{family}}} | spouse = {{{spouse}}} | significant_other = {{{significant_other}}} | children = {{{children}}} | relatives = {{{relatives}}} | religion = {{{religion}}} | origin = {{{origin}}} | nationality = {{{nationality}}} }} <syntaxhighlight lang="html" style="overflow:auto">{{Infobox character | color = <!-- headers background color; the foreground color is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | image = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | first = <!-- Use instead of first_major= etc. when custom or complex formatting is needed. --> | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | last = <!-- Use instead of last_major= etc. when custom or complex formatting is needed. --> | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = }}</syntaxhighlight> == Parameters == All parameters are optional. {| class="wikitable" |- ! scope="col" | Parameter ! scope="col" | Notes |- ! scope="row" | color | Background color for header bars (default = #DEDEE2). The text color is automatically determined. Must meet AAA compliance standards outlines on [[WP:COLOR]]. |- ! scope="row" | name | Character name to display in top header (default = PAGENAME). |- ! scope="row" | series | Name of the series in which the character appears. |- ! scope="row" | franchise | Name of the fictional world or story in which the character appears. Does not italicize title. |- ! scope="row" | multiple | Set to yes if the infobox describes more than one character. |- ! scope="row" | image | Image of the character. "File:" and wikilinking is not required. i.e. use {{para|image|Example.png}}. |- ! scope="row" | image_upright | The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px. |- ! scope="row" | alt | Alt text for image |- ! scope="row" | caption | A caption explaining the image. |- ! scope="row" | first_major | The title of the major work the fictional element first appeared in. Major works include TV series, films, books, albums and games. |- ! scope="row" | first_minor | The title of the minor work the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions. |- ! scope="row" | first_issue | The number of the comic book issue the fictional element first appeared in. |- ! scope="row" | first_date | The date of the publication/release of the minor work where the fictional element first appeared in. |- ! scope="row" | last_major | The title of the major work the fictional element last appeared in. Major works include TV series, films, books, albums and games. |- ! scope="row" | last_minor | The title of the minor work the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions. |- ! scope="row" | last_issue | The number of the comic book issue the fictional element last appeared in. |- ! scope="row" | last_date | The date of the publication/release of the minor work where the fictional element last appeared in. |- ! scope="row" | first | First appearance of the character. |- ! scope="row" | firstgame | First appearance in a game of the character. |- ! scope="row" | last | Last appearance of the character. |- ! scope="row" | creator | Name of the individuals who are credited with the creation of the character. |- ! scope="row" | based_on | Name of the original character the adaptation is based on. Use this field in conjunction with {{para|adapted_by}}. |- ! scope="row" | adapted_by | Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character. |- ! scope="row" | designer | Name of the individuals who designed the character. |- ! scope="row" | portrayer | Name of the individuals who portrayed the character. |- ! scope="row" | voice | Name of the individuals who voiced the character. Should be omitted if the same as "portrayer". |- ! scope="row" | motion_actor | Name of the individuals who portrayed the character in motion capture. |- ! scope="row" | noinfo | Disable the first "In-universe information" header. |- ! scope="row" | info-hdr | Text for display in second header (default = Information). |- ! scope="row" | full_name | The character's full name. |- ! scope="row" | nickname/nicknames | Any nicknames used by the character. |- ! scope="row" | alias/aliases | Any aliases used by the character. |- ! scope="row" | species/race | The species or race of the character. Use for non-human characters only. |- ! scope="row" | gender | The gender of the character. Use only if not obvious. |- ! scope="row" | title | Titles the character was known by. |- ! scope="row" | occupation/position | The character's job or role. |- ! scope="row" | class | The character class for RPG characters. |- ! scope="row" | affiliation | The groups or teams the character belongs to. |- ! scope="row" | alignment | The character's Dungeons & Dragons alignment. |- ! scope="row" | fighting_style | The primary fighting styles used by the character. |- ! scope="row" | weapon | The types of weapons the character uses. |- ! scope="row" | family | The character's family members. |- ! scope="row" | spouse/spouses | The character's spouses. |- ! scope="row" | significant_other/significant_others | The character's significant others. |- ! scope="row" | children | The characters's children. |- ! scope="row" | relatives | The characters's relatives. |- ! scope="row" | religion | The character's religion. |- ! scope="row" | origin/home | The character's place of origin. |- ! scope="row" | nationality | The character's nationality. |- ! scope="row" | extra-hdr | Text for display in third header (default = No third header). |- ! scope="row" | lbl# | Label to display in left column where "#" is 1-5, 21-25, or 31-35 for custom fields under the 1st, 2nd, or 3rd headers respectively. |- ! scope="row" | data# | Text to display in the right column corresponding to the appropriate "lbl#". |} ===TemplateData=== <templatedata> { "description": "Creates an infobox for a fictional character of any type.", "params": { "color": { "label": "Color", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Background color for header bars (default = #DEDEE2). The text color is automatically computed. Must meet AAA compliance standards outlines on [[WP:COLOR]].", "aliases": [ "colour" ] }, "name": { "label": "Name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Character name to display in top header (default = PAGENAME)." }, "series": { "label": "Series", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the series in which the character appears." }, "franchise": { "label": "Franchise", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the fictional world or story in which the character appears. Does not italicize title." }, "multiple": { "label": "Multiple", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Set to yes if the infobox describes more than one character." }, "image": { "label": "Image", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Image of the character. \"File:\" and wikilinking is not required. i.e. use {{para|image|Example.png}}." }, "image_upright": { "label": "Image upright", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px." }, "alt": { "label": "Alt", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Alt text for image per [[WP:MOSALT]]." }, "caption": { "label": "Caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A caption explaining the image." }, "first_major": { "label": "First appearance major", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the major work the fictional element first appeared in. Major works include TV series, films, books, albums and games." }, "first_minor": { "label": "First appearance minor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the minor work the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions." }, "first_issue": { "label": "First appearance issue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The number of the comic book issue the fictional element first appeared in." }, "first_date": { "label": "First appearance date", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The date of the publication/release of the minor work where the fictional element first appeared in." }, "last_major": { "label": "Last appearance major", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the major work the fictional element last appeared in. Major works include TV series, films, books, albums and games." }, "last_minor": { "label": "Last appearance minor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the minor work the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions." }, "last_issue": { "label": "Last appearance issue", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The number of the comic book issue the fictional element last appeared in." }, "last_date": { "label": "Last appearance date", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The date of the publication/release of the minor work where the fictional element last appeared in." }, "first": { "label": "First appearance", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "First appearance of the character." }, "firstgame": { "label": "First game", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "First appearance in a game of the character." }, "last": { "label": "Last appearance", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Last appearance of the character." }, "creator": { "label": "Creator", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who are credited with the creation of the character." }, "based_on": { "label": "Based on", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the original character the adaptation is based on. Use {{based on}} to add the title of original character and the names of the original creators. Use this field in conjunction with {{para|adapted_by}}." }, "adapted_by": { "label": "Adapted by", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character." }, "designer": { "label": "Designer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who designed the character." }, "portrayer": { "label": "Portrayer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who portrayed the character." }, "voice": { "label": "Voice actor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who voiced the character (if different from portrayer or there is no portrayer)" }, "motion_actor": { "label": "Motion actor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Name of the individuals who portrayed the character in motion capture." }, "lbl1": { "label": "Label 1", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Label to display in left column for custom fields under the 1st header." }, "data1": { "label": "Data 1", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text to display in the right column corresponding to lbl1." }, "lbl2": { "label": "Label 2", "inherits": "lbl1" }, "data2": { "label": "Data 2", "description": "Text to display in the right column corresponding to lbl2.", "inherits": "data1" }, "lbl3": { "label": "Label 3", "inherits": "lbl1" }, "data3": { "label": "Data 3", "description": "Text to display in the right column corresponding to lbl3.", "inherits": "data1" }, "lbl4": { "label": "Label 4", "inherits": "lbl1" }, "data4": { "label": "Data 4", "description": "Text to display in the right column corresponding to lbl4.", "inherits": "data1" }, "lbl5": { "label": "Label 5", "inherits": "lbl1" }, "data5": { "label": "Data 5", "description": "Text to display in the right column corresponding to lbl5.", "inherits": "data1" }, "noinfo": { "label": "Disable second header", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Disable the first \"In-universe information\" header." }, "info-hdr": { "label": "Second header text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text for display in second header (default = Information)." }, "full_name": { "label": "Full name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's full name." }, "nickname": { "label": "Nickname", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A nickname used by the character. If there is more than one nickname, use {{para|nicknames}}." }, "nicknames": { "label": "Nicknames", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any nicknames used by the character. If there is only one nickname, use {{para|nickname}}." }, "alias": { "label": "Alias", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "An alias used by the character. If there is more than one alias, use {{para|aliases}}." }, "aliases": { "label": "Alias", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any aliases used by the character. If there is only one alias, use {{para|alias}}." }, "species": { "label": "Species", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The species of the character. Use for non-human characters only." }, "race": { "label": "Race", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The race of the character. Use for non-human characters only." }, "gender": { "label": "Gender", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The gender of the character. Use only if not obvious." }, "title": { "label": "Title", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Titles the character was known by." }, "occupation": { "label": "Occupation", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's job or role." }, "position": { "label": "Position", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's job or role." }, "class": { "label": "Class", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character class for RPG characters." }, "affiliation": { "label": "Affiliation", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The groups or teams the character belongs to." }, "alignment": { "label": "Alignment", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's Dungeons & Dragons alignment." }, "fighting_style": { "label": "Fighting style", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The primary fighting styles used by the character." }, "weapon": { "label": "Weapon", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The types of weapons the character uses." }, "family": { "label": "Family", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's family members." }, "spouse": { "label": "Spouse", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's spouses." }, "spouses": { "label": "Spouses", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's spouses." }, "significant_other": { "label": "Significant other", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's significant others. If there is more than one significant_other, use {{para|significant_others}}." }, "significant_others": { "label": "Significant others", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's significant others. If there is only one significant_other, use {{para|significant_other}}." }, "children": { "label": "Children", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The characters's children" }, "relatives": { "label": "Relatives", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The characters's relatives" }, "religion": { "label": "Religion", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's religion" }, "origin": { "label": "Origin", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's place of origin." }, "home": { "label": "Home", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's place of origin." }, "nationality": { "label": "Nationality", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The character's nationality." }, "lbl21": { "label": "Label 21", "description": "Label to display in left column for custom fields under the 2nd header.", "inherits": "lbl1" }, "data21": { "label": "Data 21", "description": "Text to display in the right column corresponding to lbl21.", "inherits": "data1" }, "lbl22": { "label": "Label 22", "inherits": "lbl21" }, "data22": { "label": "Data 22", "description": "Text to display in the right column corresponding to lbl22.", "inherits": "data1" }, "lbl23": { "label": "Label 23", "inherits": "lbl21" }, "data23": { "label": "Data 23", "description": "Text to display in the right column corresponding to lbl23.", "inherits": "data1" }, "lbl24": { "label": "Label 24", "inherits": "lbl21" }, "data24": { "label": "Data 24", "description": "Text to display in the right column corresponding to lbl24.", "inherits": "data1" }, "lbl25": { "label": "Label 25", "inherits": "lbl21" }, "data25": { "label": "Data 25", "description": "Text to display in the right column corresponding to lbl25.", "inherits": "data1" }, "extra-hdr": { "label": "Third header text", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Text for display in third header (default = No third header)." }, "lbl31": { "label": "Label 31", "description": "Label to display in left column for custom fields under the 3rd header.", "inherits": "lbl22" }, "data31": { "label": "Data 31", "description": "Text to display in the right column corresponding to lbl31.", "inherits": "data1" }, "lbl32": { "label": "Label 32", "inherits": "lbl31" }, "data32": { "label": "Data 32", "description": "Text to display in the right column corresponding to lbl32.", "inherits": "data1" }, "lbl33": { "label": "Label 33", "inherits": "lbl31" }, "data33": { "label": "Data 33", "description": "Text to display in the right column corresponding to lbl33.", "inherits": "data1" }, "lbl34": { "label": "Label 34", "inherits": "lbl31" }, "data34": { "label": "Data 34", "description": "Text to display in the right column corresponding to lbl34.", "inherits": "data1" }, "lbl35": { "label": "Label 35", "inherits": "lbl31" }, "data35": { "label": "Data 35", "description": "Text to display in the right column corresponding to lbl35.", "inherits": "data1" } }, "format": "block" } </templatedata> === All parameters (not for general use) === <pre>{{Infobox character | color = <!-- headers background colour; the foreground colour is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | multiple = | image = | image_upright = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | first = | firstgame = | last = | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | lbl1 = | data1 = | lbl2 = | data2 = | lbl3 = | data3 = | lbl4 = | data4 = | lbl5 = | data5 = | noinfo = | info-hdr = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = | lbl21 = | data21 = | lbl22 = | data22 = | lbl23 = | data23 = | lbl24 = | data24 = | lbl25 = | data25 = | extra-hdr = | lbl31 = | data31 = | lbl32 = | data32 = | lbl33 = | data33 = | lbl34 = | data34 = | lbl35 = | data35 = }}</pre> == Example == {{Infobox character | name = John Doe | series = [[Criminal Minds]] | image = | caption = | first_major = Criminal Minds | first_minor = Pilot | first_date = 2005 | last_major = Criminal Minds | last_minor = Last One | last_date = 2018 | creator = [[Agnes Nixon]] | portrayer = [[Soupy Sales]] | nickname = Doeboy | alias = Jack Dew | gender = Male | title = Detective | occupation = Law enforcement | family = Doe | spouse = Jane Doe | significant_other = | children = John Doe, Jr. | relatives = Phil Doe (father), Nancy Doe (mother) | religion = [[Christianity|Christian]] | nationality = American }} <syntaxhighlight lang="moin"> {{Infobox character | name = John Doe | series = [[Criminal Minds]] | image = | caption = | first_major = Criminal Minds | first_minor = Pilot | first_date = 2005 | last_major = Criminal Minds | last_minor = Last One | last_date = 2018 | creator = [[Agnes Nixon]] | portrayer = [[Soupy Sales]] | nickname = Doeboy | alias = Jack Dew | gender = Male | title = Detective | occupation = Law enforcement | family = Doe | spouse = Jane Doe | significant_other = | children = John Doe, Jr. | relatives = Phil Doe (father), Nancy Doe (mother) | religion = [[Christianity|Christian]] | nationality = American }} </syntaxhighlight> <includeonly> [[Category:Templates]] </includeonly> c3b5673c7b9ea096939919c0cf7da9d3440d78e7 Blossom 0 158 192 191 2023-07-07T02:39:12Z 174.243.249.22 0 wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. Current theories about her past range from involvement in the Fey Mob to being the avatar of the missing Queen Titania.<br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry == Additional Companions == * Craic == Trivia == [[Category:The Party]] 499a9eb1907ffd29588ee7d4369013233e0dfe50 193 192 2023-07-07T02:39:51Z 174.243.249.22 0 wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. Current theories about her past range from involvement in the Fey Mob to being the avatar of the missing Queen Titania.<br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry == Additional Companions == * Craic * Oscar, Fairy Dragon == Trivia == [[Category:The Party]] 08666c471f3c50e50628454fb65318fb95973366 194 193 2023-07-07T02:45:22Z 174.243.249.22 0 wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. Current theories about her past range from involvement in the Fey Mob to being the avatar of the missing Queen Titania. During the party's trip to the Fey Wild, she was recognized by a few people from her past, bringing new memories to light.<br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry == Additional Companions == * Craic * Oscar, Fairy Dragon == Trivia == Blossom gets her name from a series of letters in her possession when she woke up in Neverwinter Forest. Blossom, as an Eladrin, can usually be found in her Autumn form. [[Category:The Party]] 689d71efa8eec512d0e475cab3a888458ddf8451 195 194 2023-07-07T02:56:15Z 174.195.194.19 0 wikitext text/x-wiki {{Character|name=Blossom|image=Blossom.png|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. Current theories about her past range from involvement in the Fey Mob to being the avatar of the missing Queen Titania. During the party's trip to the Fey Wild, she was recognized by a few people from her past, bringing new memories to light.<br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry * Cursed Fedora == Additional Companions == * Craic * Oscar, Fairy Dragon == Trivia == Blossom gets her name from a series of letters in her possession when she woke up in Neverwinter Forest. Blossom, as an Eladrin, can usually be found in her Autumn form. [[Category:The Party]] b59508e8864ec7bbc904eafba5a0e9f213b224db Marcus Blackblood 0 157 186 185 2023-07-07T16:26:04Z wikia:thunder-ice-and-everything-nice>Wolfjustin 0 wikitext text/x-wiki {{Character|name=Marcus Blackblood|image=Marcus.png|aliases=Marcus Foxlow (Legal Name) PC Richard|relatives=Angelica Foxlow (Wife) Marcel Blackblood (Father) Nadia Blackblood (Mother) Holly Blackblood (Sister)|affiliation=The Banes of Thunder River Rats|age=17 (currently) 22 (formerly)|hometown=Leilon|player=Justin|race=Zariel Tiefling|class=Warlock|subclass=The Great Old One|str=10 [+0]|dex=16 [+3]|con=14 [+2]|wis=13 [+1]|int=12 [+1]|cha=20 [+5]}} == Appearance == == History == == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] * Gorthok's Cape of Misty Step == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) * ThisleHelm * Shmacles * SolitConfi == Trivia == [[Category:The Party]] a4c82b19bf453b5eeb74bbf632902bbc3876a2a1 187 186 2023-07-07T20:50:32Z wikia:thunder-ice-and-everything-nice>Wolfjustin 0 /* History */ wikitext text/x-wiki {{Character|name=Marcus Blackblood|image=Marcus.png|aliases=Marcus Foxlow (Legal Name) PC Richard|relatives=Angelica Foxlow (Wife) Marcel Blackblood (Father) Nadia Blackblood (Mother) Holly Blackblood (Sister)|affiliation=The Banes of Thunder River Rats|age=17 (currently) 22 (formerly)|hometown=Leilon|player=Justin|race=Zariel Tiefling|class=Warlock|subclass=The Great Old One|str=10 [+0]|dex=16 [+3]|con=14 [+2]|wis=13 [+1]|int=12 [+1]|cha=20 [+5]}} == Appearance == == History == Marcus was born the youngest of the Blackblood family of Leilon, a family of Alchemist and Herbalists who are well regarded in the surrounding region. Legends say that the very first Blackblood was able to concoct an elixir so potent that it brought a noble back from the dead. The Blackblood family wore this tale as a badge of honor and named their family shop The Blackblood Elixir as a homage to the very first Blackblood. This shop has been passed down and run by generations of Blackbloods ever since. But Marcuse's birth cast a dark shadow over the reputation and multi-generational identity built by the Blackbloods. A myth of sorts had emerged over the years in regards to how the Blackblood Elixir was created, this myth proclaimed that the creator of the potion made a pact with a demon who bestowed them with the knowledge necessary to create it. If this myth were to be believed it would mean that the foundation that their family was built on was lie. This myth would become reality when Marcus was born as Tiefling, which provided evidence of some sort of infernal link in the Blackbloods past. == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] * Gorthok's Cape of Misty Step == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) * ThisleHelm * Shmacles * SolitConfi == Trivia == [[Category:The Party]] fcbb9aefb21db531a5351586f84980c6ecaf47c2 Helu 0 150 173 172 2023-07-09T01:09:35Z 98.11.214.120 0 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength <br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == [[Category:The Party]] 7b10cc8b7e9ee93befd28f01061e778ef85ad322 174 173 2023-07-09T05:26:29Z 98.11.214.120 0 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == [[Category:The Party]] 2a19dcc23887f523f80d544539c97a7a61692b62 175 174 2023-07-09T05:45:42Z 98.11.214.120 0 wikitext text/x-wiki {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|str=18 [+4]|dex=14 [+2]|con=16 [+3]|wis=15 [+1]|int=12 [+1]|cha=12 [+1]|image=Helu.png}} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] 148f2ec9c4ed3f16b27d462610dea05e83a7a2ed 238 175 2023-11-02T20:41:28Z Gingerdanger 2 wikitext text/x-wiki {{Infobox character | name = Helu | image = | player = Moss | party | age | race | full_name = | alias = <!-- or |aliases= --> | family = | infohdr = Statistics | race = Half elf/half orc | class = Barbarian | subclass = Wild Magic | str = 18 [+4] | dex = 14 [+2] | con = 16 [+3] | wis = 15 [+1] | int = 12 [+1] | cha = 12 [+1] }} {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|image=Helu.png}} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] c5e2e9feca1fae2ffc47b2f5c0ec54e79cc92f75 239 238 2023-11-02T20:46:01Z Gingerdanger 2 wikitext text/x-wiki {{Infobox character | name = Helu | image = | player = Moss | affiliation = The Banes of Thunder | age = 16 | alias = Moss | family = Unnamed adoptive mother, Unnamed adoptive father, Ronaan Wisespeaker [adoptive brother], unnamed younger adoptive brother | infohdr = Statistics | race = Half elf/half orc | class = Barbarian | subclass = Wild Magic | str = 18 [+4] | dex = 14 [+2] | con = 16 [+3] | wis = 15 [+1] | int = 12 [+1] | cha = 12 [+1] }} {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|image=Helu.png}} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] f5445706fb4e81ede7354c55487d45747f70c74d Module:Formatted appearance 828 367 631 2023-08-31T04:21:25Z m>Pppery 0 Typo Scribunto text/plain -- This module requires the use of Module:List. local p = {} -- Local function which is used to get a correctly formatted entry. -- Function checks if the array had a value added by checking the counter, -- and returns the relevant result. local function getFormattedEntry(args, counter) if (counter == 1) then -- Check if the counter stayed the same. return "" -- Nothing was added to array; Return empty string. elseif (counter == 2) then -- Check if only one value was added to the array. return args[1] -- Only one value was added to array; Return that value. else -- The array had more than one value added. return table.concat(args, "<br/>") -- Retrieve the formatted plainlist. end end --[[ Local function which is used to format an appearance for a comic book, in the style of: Line 1: <comic book title> #<issue number> (with comic book title in italics) Line 2: <release date> For other usages, see createGenericEntry(). The function works with the following combinations: -- Only comic book title (example: "The Incredible Hulk"). -- Title and issue number (example: "The Incredible Hulk" and "181"). -- Title and release date (example: "The Incredible Hulk and "November 1974"). -- Title, issue number and release date (example: "The Incredible Hulk", "181" and "November 1974"). -- Only release date (example: "November 1974"). --]] local function createComicEntry(appearanceMajor, appearanceMinor, appearanceDate) local fullString = {} -- Variable to save the array. local counter = 1 -- Variable to save the array counter. if (appearanceMajor ~= nil) then -- Check if a comic book title was entered. if (appearanceMinor == nil) then -- A comic book title was entered; Check if a issue number was entered. fullString[counter] = appearanceMajor -- A issue was not entered; Add only the comic book title to the array. counter = counter + 1 -- Increment counter by one. else fullString[counter] = appearanceMajor .. " " .. appearanceMinor -- A issue was entered; Add both to the array. counter = counter + 1 -- Increment counter by one. end end if (appearanceDate ~= nil) then -- Check if a release date was entered. fullString[counter] = appearanceDate -- A release date was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry. end --[[ Local function which is used to format an appearance for most usages, including television, film, books, songs and games, in the style of: Line 1: <minor work title> (in quotes) (Minor works include: TV episodes, chapters, songs and game missions) Line 2: <major work title> (in italics) (Major works include: TV series, films, books, albums and games) Line 3: <release date> For comic book usages, see createComicEntry(). The function works with the following combinations: -- Only minor work title (example: "Live Together, Die Alone"). -- Minor work title and major work title (example: "Live Together, Die Alone" and "Lost"). -- Minor work title and release date (example: "Live Together, Die Alone" and "May 24, 2006"). -- Minor work title, major work title and release date (example: "Live Together, Die Alone", "Lost" and "May 24, 2006"). -- Only major work title (example: "Lost"). -- major work title and release date (example: "Lost" and "May 24, 2006"). -- Only release date (example: "May 24, 2006"). --]] local function createGenericEntry(appearanceMajor, appearanceMinor, appearanceDate) local fullString = {} -- Variable to save the array. local counter = 1 -- Variable to save the array counter. if (appearanceMinor ~= nil) then -- Check if a minor appearance was entered. fullString[counter] = appearanceMinor -- A minor appearance was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end if (appearanceMajor ~= nil) then -- Check if a major appearance was entered. fullString[counter] = appearanceMajor -- A major appearance was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end if (appearanceDate ~= nil) then -- Check if a release date was entered. fullString[counter] = appearanceDate -- A release date was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry. end -- Local function which is used to format with a hash symbol comic book issues. -- For other minor works, see getFormattedGenericMinorWork(). local function getFormattedComicMinorWorkTitle(issue) if (issue ~= nil) then -- Check if the issue is not nil. if (string.find(issue, "#")) then -- Check if the issue already has a hash symbol. return issue -- Hash symbol already present; Return issue. else local formattedString = string.gsub(issue, "%d+", "#%1") -- Hash symbol not found; Add the symbol before the issue number. return formattedString -- Return issue. end else return nil -- issue is nil; Return nil. end end -- Local function which is used to format with quotes a minor work title of most types. -- For comic book issues, see getFormattedComicMinorWork() (see [MOS:MINORWORK]). local function getFormattedGenericMinorWorkTitle(title) if (title ~= nil) then -- Check if the title is not nil. return "\"" .. title .. "\"" -- Title is not nil; Add quotes to the title. else return nil -- Title is nil; Return nil. end end -- Local function which is used to format with italics a major work title (see [MOS:MAJORWORK]). local function getFormattedMajorWorkTitle(title) if (title ~= nil) then -- Check if the title is not nil. return "''" .. title .. "''" -- Title is not nil; Add italics to the title. else return nil -- Title is nil; Return nil. end end -- Local function which does the actual main process. local function _getFormattedAppearance(args) local appearanceMajor = args['major_work'] -- Get the title of the major work. local appearanceMinor = args['minor_work'] -- Get the title of the minor work. local isComic = false -- Variable to save the status of wether the appearence is from a comic book. if (args['issue'] ~= nil) then -- Check if the comic specific issue is not nil. appearanceMinor = args['issue'] -- Issue is not nil; Get the issue number. isComic = true -- Set isComic to true. end local appearanceDate = args['date'] -- Get the release date of the minor work. local formattedAppearanceMajor = getFormattedMajorWorkTitle(appearanceMajor) -- Call getFormattedMajorWorkTitle() to get a formatted major work title. if (isComic == false) then -- Check if the appearance is a comic book appearance. -- The appearance is not a comic book appearance; local formattedAppearanceMinor = getFormattedGenericMinorWorkTitle(appearanceMinor) -- Call getFormattedGenericMinorWorkTitle() to get a formatted minor work title. return createGenericEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createGenericEntry() to create an appearance entry. else -- The appearance is a comic book appearance. local formattedAppearanceMinor = getFormattedComicMinorWorkTitle(appearanceMinor) -- Call getFormattedComicMinorWorkTitle() to get a formatted minor work title. return createComicEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createComicEntry() to create a comic book appearance entry. end end --[[ Public function which is used to format the |first_appeared= and |last_appeared= fields. The usage of this module allows for correct title formatting (see [MOS:MAJORWORK] and [MOS:MINORWORK]), and correct line breaks based on guidelines (see [WP:UBLIST]). Parameters: -- |major_work= — optional; The title of the major work the fictional element appeared in. Major works include TV series, films, books, albums and games. -- |minor_work= — optional; The title of the minor work the fictional element appeared in. Minor works include TV episodes, chapters, songs and game missions. -- |issue= — optional; The number of the comic book issue the fictional element appeared in. -- |date= — optional; The date of the publication/release of the minor work where the fictional element appeared in. --]] function p.getFormattedAppearance(frame) local getArgs = require('Module:Arguments').getArgs -- Use Module:Arguments to access module arguments. local args = getArgs(frame) -- Get the arguments sent via the template. return _getFormattedAppearance(args) -- Call _getFormattedAppearance() to perform the actual process. end return p 801fe2d9de9c3eb00e60fd962b6450e0ab1adc0f 632 631 2023-11-02T21:46:47Z Gingerdanger 2 1 revision imported Scribunto text/plain -- This module requires the use of Module:List. local p = {} -- Local function which is used to get a correctly formatted entry. -- Function checks if the array had a value added by checking the counter, -- and returns the relevant result. local function getFormattedEntry(args, counter) if (counter == 1) then -- Check if the counter stayed the same. return "" -- Nothing was added to array; Return empty string. elseif (counter == 2) then -- Check if only one value was added to the array. return args[1] -- Only one value was added to array; Return that value. else -- The array had more than one value added. return table.concat(args, "<br/>") -- Retrieve the formatted plainlist. end end --[[ Local function which is used to format an appearance for a comic book, in the style of: Line 1: <comic book title> #<issue number> (with comic book title in italics) Line 2: <release date> For other usages, see createGenericEntry(). The function works with the following combinations: -- Only comic book title (example: "The Incredible Hulk"). -- Title and issue number (example: "The Incredible Hulk" and "181"). -- Title and release date (example: "The Incredible Hulk and "November 1974"). -- Title, issue number and release date (example: "The Incredible Hulk", "181" and "November 1974"). -- Only release date (example: "November 1974"). --]] local function createComicEntry(appearanceMajor, appearanceMinor, appearanceDate) local fullString = {} -- Variable to save the array. local counter = 1 -- Variable to save the array counter. if (appearanceMajor ~= nil) then -- Check if a comic book title was entered. if (appearanceMinor == nil) then -- A comic book title was entered; Check if a issue number was entered. fullString[counter] = appearanceMajor -- A issue was not entered; Add only the comic book title to the array. counter = counter + 1 -- Increment counter by one. else fullString[counter] = appearanceMajor .. " " .. appearanceMinor -- A issue was entered; Add both to the array. counter = counter + 1 -- Increment counter by one. end end if (appearanceDate ~= nil) then -- Check if a release date was entered. fullString[counter] = appearanceDate -- A release date was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry. end --[[ Local function which is used to format an appearance for most usages, including television, film, books, songs and games, in the style of: Line 1: <minor work title> (in quotes) (Minor works include: TV episodes, chapters, songs and game missions) Line 2: <major work title> (in italics) (Major works include: TV series, films, books, albums and games) Line 3: <release date> For comic book usages, see createComicEntry(). The function works with the following combinations: -- Only minor work title (example: "Live Together, Die Alone"). -- Minor work title and major work title (example: "Live Together, Die Alone" and "Lost"). -- Minor work title and release date (example: "Live Together, Die Alone" and "May 24, 2006"). -- Minor work title, major work title and release date (example: "Live Together, Die Alone", "Lost" and "May 24, 2006"). -- Only major work title (example: "Lost"). -- major work title and release date (example: "Lost" and "May 24, 2006"). -- Only release date (example: "May 24, 2006"). --]] local function createGenericEntry(appearanceMajor, appearanceMinor, appearanceDate) local fullString = {} -- Variable to save the array. local counter = 1 -- Variable to save the array counter. if (appearanceMinor ~= nil) then -- Check if a minor appearance was entered. fullString[counter] = appearanceMinor -- A minor appearance was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end if (appearanceMajor ~= nil) then -- Check if a major appearance was entered. fullString[counter] = appearanceMajor -- A major appearance was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end if (appearanceDate ~= nil) then -- Check if a release date was entered. fullString[counter] = appearanceDate -- A release date was entered; Add it to the array. counter = counter + 1 -- Increment counter by one. end return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry. end -- Local function which is used to format with a hash symbol comic book issues. -- For other minor works, see getFormattedGenericMinorWork(). local function getFormattedComicMinorWorkTitle(issue) if (issue ~= nil) then -- Check if the issue is not nil. if (string.find(issue, "#")) then -- Check if the issue already has a hash symbol. return issue -- Hash symbol already present; Return issue. else local formattedString = string.gsub(issue, "%d+", "#%1") -- Hash symbol not found; Add the symbol before the issue number. return formattedString -- Return issue. end else return nil -- issue is nil; Return nil. end end -- Local function which is used to format with quotes a minor work title of most types. -- For comic book issues, see getFormattedComicMinorWork() (see [MOS:MINORWORK]). local function getFormattedGenericMinorWorkTitle(title) if (title ~= nil) then -- Check if the title is not nil. return "\"" .. title .. "\"" -- Title is not nil; Add quotes to the title. else return nil -- Title is nil; Return nil. end end -- Local function which is used to format with italics a major work title (see [MOS:MAJORWORK]). local function getFormattedMajorWorkTitle(title) if (title ~= nil) then -- Check if the title is not nil. return "''" .. title .. "''" -- Title is not nil; Add italics to the title. else return nil -- Title is nil; Return nil. end end -- Local function which does the actual main process. local function _getFormattedAppearance(args) local appearanceMajor = args['major_work'] -- Get the title of the major work. local appearanceMinor = args['minor_work'] -- Get the title of the minor work. local isComic = false -- Variable to save the status of wether the appearence is from a comic book. if (args['issue'] ~= nil) then -- Check if the comic specific issue is not nil. appearanceMinor = args['issue'] -- Issue is not nil; Get the issue number. isComic = true -- Set isComic to true. end local appearanceDate = args['date'] -- Get the release date of the minor work. local formattedAppearanceMajor = getFormattedMajorWorkTitle(appearanceMajor) -- Call getFormattedMajorWorkTitle() to get a formatted major work title. if (isComic == false) then -- Check if the appearance is a comic book appearance. -- The appearance is not a comic book appearance; local formattedAppearanceMinor = getFormattedGenericMinorWorkTitle(appearanceMinor) -- Call getFormattedGenericMinorWorkTitle() to get a formatted minor work title. return createGenericEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createGenericEntry() to create an appearance entry. else -- The appearance is a comic book appearance. local formattedAppearanceMinor = getFormattedComicMinorWorkTitle(appearanceMinor) -- Call getFormattedComicMinorWorkTitle() to get a formatted minor work title. return createComicEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createComicEntry() to create a comic book appearance entry. end end --[[ Public function which is used to format the |first_appeared= and |last_appeared= fields. The usage of this module allows for correct title formatting (see [MOS:MAJORWORK] and [MOS:MINORWORK]), and correct line breaks based on guidelines (see [WP:UBLIST]). Parameters: -- |major_work= — optional; The title of the major work the fictional element appeared in. Major works include TV series, films, books, albums and games. -- |minor_work= — optional; The title of the minor work the fictional element appeared in. Minor works include TV episodes, chapters, songs and game missions. -- |issue= — optional; The number of the comic book issue the fictional element appeared in. -- |date= — optional; The date of the publication/release of the minor work where the fictional element appeared in. --]] function p.getFormattedAppearance(frame) local getArgs = require('Module:Arguments').getArgs -- Use Module:Arguments to access module arguments. local args = getArgs(frame) -- Get the arguments sent via the template. return _getFormattedAppearance(args) -- Call _getFormattedAppearance() to perform the actual process. end return p 801fe2d9de9c3eb00e60fd962b6450e0ab1adc0f Template:Infobox character 10 177 583 2023-09-28T05:08:53Z m>Pppery 0 Reverted edits by [[Special:Contributions/Ruben061737116|Ruben061737116]] ([[User talk:Ruben061737116|talk]]) to last revision by Pppery wikitext text/x-wiki {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} | color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{{image|}}}| | caption = {{{caption|}}} | headerstyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} |color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | label1 = First appearance | data1 = {{#if: {{{first|}}} | {{{first|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{first_major|}}} |minor_work={{{first_minor|}}} |issue={{{first_issue|}}} |date={{{first_date|}}} }} }} | label2 = First game | data2 = {{{firstgame|}}} | label3 = Last appearance | data3 = {{#if: {{{last|}}} | {{{last|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{last_major|}}} |minor_work={{{last_minor|}}} |issue={{{last_issue|}}} |date={{{last_date|}}} }} }} | label4 = Created by | data4 = {{{creator|}}} | label5 = Based on | data5 = {{{based_on|}}} | label6 = Adapted by | data6 = {{{adapted_by|}}} | label7 = Designed by | data7 = {{{designer|}}} | label8 = Portrayed by | data8 = {{{portrayer|}}} | label9 = Voiced by | data9 = {{{voice|}}} | label10 = Motion capture | data10 = {{{motion_actor|}}} | label11 = {{{lbl1|}}} | data11 = {{{data1|}}} | label12 = {{{lbl2|}}} | data12 = {{{data2|}}} | label13 = {{{lbl3|}}} | data13 = {{{data3|}}} | label14 = {{{lbl4|}}} | data14 = {{{data4|}}} | label15 = {{{lbl5|}}} | data15 = {{{data5|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{race|}}} {{{species|}}} {{{gender|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{alignment|}}} {{{fighting_style|}}} {{{weapon|}}} {{{family|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{origin|}}} {{{home|}}} {{{nationality|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} | {{If empty |{{{info-hdr|}}} |In-universe information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = {{#if: {{{alias|}}} | Alias | Aliases }} | data22 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label23 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data23 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label24 = {{#if: {{{race|}}} | Race | Species }} | data24 = {{If empty |{{{race|}}} |{{{species|}}} }} | label25 = Gender | data25 = {{{gender|}}} | label26 = Title | data26 = {{{title|}}} | label27 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data27 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label28 = {{#if: {{{affiliation|}}} | Affiliation | Alignment }} | data28 = {{If empty |{{{affiliation|}}} |{{{alignment|}}} }} | label29 = Fighting style | data29 = {{{fighting_style|}}} | label30 = Weapon | data30 = {{{weapon|}}} | label31 = Family | data31 = {{{family|}}} | label32 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data32 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label33 = {{#if: {{{significant_other|}}} | Significant other | Significant others }} | data33 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label34 = Children | data34 = {{{children|}}} | label35 = Relatives | data35 = {{{relatives|}}} | label36 = Religion | data36 = {{{religion|}}} | label37 = {{#if: {{{origin|}}} | Origin | Home }} | data37 = {{If empty |{{{origin|}}} |{{{home|}}} }} | label38 = Nationality | data38 = {{{nationality|}}} | label39 = {{{lbl21|}}} | data39 = {{{data21|}}} | label40 = {{{lbl22|}}} | data40 = {{{data22|}}} | label41 = {{{lbl23|}}} | data41 = {{{data23|}}} | label42 = {{{lbl24|}}} | data42 = {{{data24|}}} | label43 = {{{lbl25|}}} | data43 = {{{data25|}}} | header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 3ce93cfa3dfb9b4b9608b850f3d4e6ac282b3bc9 241 2023-11-02T21:14:41Z Gingerdanger 2 Created page with "{{Infobox character | color = <!-- headers background colour; the foreground colour is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | multiple = | image = | image_upright = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games -->..." wikitext text/x-wiki {{Infobox character | color = <!-- headers background colour; the foreground colour is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | multiple = | image = | image_upright = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | first = | firstgame = | last = | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | lbl1 = | data1 = | lbl2 = | data2 = | lbl3 = | data3 = | lbl4 = | data4 = | lbl5 = | data5 = | noinfo = | info-hdr = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = | lbl21 = | data21 = | lbl22 = | data22 = | lbl23 = | data23 = | lbl24 = | data24 = | lbl25 = | data25 = | extra-hdr = | lbl31 = | data31 = | lbl32 = | data32 = | lbl33 = | data33 = | lbl34 = | data34 = | lbl35 = | data35 = }} f2b9dbc1f305fd8ba56fda0db8d7475a48eede01 242 241 2023-11-02T21:15:01Z Gingerdanger 2 wikitext text/x-wiki | color = <!-- headers background colour; the foreground colour is automatically computed --> | name = | series = <!-- or |franchise=; use without the italic on the outside --> | multiple = | image = | image_upright = | alt = | caption = | first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games --> | first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions --> | first_date = | last_major = | last_minor = <!-- or |last_issue= --> | last_date = | first = | firstgame = | last = | creator = <!-- only the credited creators; use adapted_by= for adaptations --> | based_on = <!-- if not an original creation, use {{based on|character|author}} --> | adapted_by = <!-- for character adaption articles --> | designer = | portrayer = | voice = | motion_actor = | lbl1 = | data1 = | lbl2 = | data2 = | lbl3 = | data3 = | lbl4 = | data4 = | lbl5 = | data5 = | noinfo = | info-hdr = | full_name = | nickname = <!-- or |nicknames= --> | alias = <!-- or |aliases= --> | species = <!-- or |race=; for non-humans only --> | gender = <!-- if not obvious --> | title = | occupation = <!-- or |position= or |class= --> | affiliation = <!-- or |alignment= --> | fighting_style = | weapon = | family = | spouse = <!-- or |spouses= --> | significant_other = <!-- or |significant_others= --> | children = | relatives = | religion = | origin = <!-- or |home= --> | nationality = | lbl21 = | data21 = | lbl22 = | data22 = | lbl23 = | data23 = | lbl24 = | data24 = | lbl25 = | data25 = | extra-hdr = | lbl31 = | data31 = | lbl32 = | data32 = | lbl33 = | data33 = | lbl34 = | data34 = | lbl35 = | data35 = 0753ec4ea2c62410ffe4b0b00a093df212ccfc3a 243 242 2023-11-02T21:15:38Z Gingerdanger 2 wikitext text/x-wiki {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} | color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{{image|}}}| | caption = {{{caption|}}} | headerstyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} |color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | label1 = First appearance | data1 = {{#if: {{{first|}}} | {{{first|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{first_major|}}} |minor_work={{{first_minor|}}} |issue={{{first_issue|}}} |date={{{first_date|}}} }} }} | label2 = First game | data2 = {{{firstgame|}}} | label3 = Last appearance | data3 = {{#if: {{{last|}}} | {{{last|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{last_major|}}} |minor_work={{{last_minor|}}} |issue={{{last_issue|}}} |date={{{last_date|}}} }} }} | label4 = Created by | data4 = {{{creator|}}} | label5 = Based on | data5 = {{{based_on|}}} | label6 = Adapted by | data6 = {{{adapted_by|}}} | label7 = Designed by | data7 = {{{designer|}}} | label8 = Portrayed by | data8 = {{{portrayer|}}} | label9 = Voiced by | data9 = {{{voice|}}} | label10 = Motion capture | data10 = {{{motion_actor|}}} | label11 = {{{lbl1|}}} | data11 = {{{data1|}}} | label12 = {{{lbl2|}}} | data12 = {{{data2|}}} | label13 = {{{lbl3|}}} | data13 = {{{data3|}}} | label14 = {{{lbl4|}}} | data14 = {{{data4|}}} | label15 = {{{lbl5|}}} | data15 = {{{data5|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{race|}}} {{{species|}}} {{{gender|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{alignment|}}} {{{fighting_style|}}} {{{weapon|}}} {{{family|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{origin|}}} {{{home|}}} {{{nationality|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} | {{If empty |{{{info-hdr|}}} |In-universe information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = {{#if: {{{alias|}}} | Alias | Aliases }} | data22 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label23 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data23 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label24 = {{#if: {{{race|}}} | Race | Species }} | data24 = {{If empty |{{{race|}}} |{{{species|}}} }} | label25 = Gender | data25 = {{{gender|}}} | label26 = Title | data26 = {{{title|}}} | label27 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data27 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label28 = {{#if: {{{affiliation|}}} | Affiliation | Alignment }} | data28 = {{If empty |{{{affiliation|}}} |{{{alignment|}}} }} | label29 = Fighting style | data29 = {{{fighting_style|}}} | label30 = Weapon | data30 = {{{weapon|}}} | label31 = Family | data31 = {{{family|}}} | label32 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data32 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label33 = {{#if: {{{significant_other|}}} | Significant other | Significant others }} | data33 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label34 = Children | data34 = {{{children|}}} | label35 = Relatives | data35 = {{{relatives|}}} | label36 = Religion | data36 = {{{religion|}}} | label37 = {{#if: {{{origin|}}} | Origin | Home }} | data37 = {{If empty |{{{origin|}}} |{{{home|}}} }} | label38 = Nationality | data38 = {{{nationality|}}} | label39 = {{{lbl21|}}} | data39 = {{{data21|}}} | label40 = {{{lbl22|}}} | data40 = {{{data22|}}} | label41 = {{{lbl23|}}} | data41 = {{{data23|}}} | label42 = {{{lbl24|}}} | data42 = {{{data24|}}} | label43 = {{{lbl25|}}} | data43 = {{{data25|}}} | header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 3ce93cfa3dfb9b4b9608b850f3d4e6ac282b3bc9 584 243 2023-11-02T21:46:31Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} | color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{{image|}}}| | caption = {{{caption|}}} | headerstyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} |color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | label1 = First appearance | data1 = {{#if: {{{first|}}} | {{{first|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{first_major|}}} |minor_work={{{first_minor|}}} |issue={{{first_issue|}}} |date={{{first_date|}}} }} }} | label2 = First game | data2 = {{{firstgame|}}} | label3 = Last appearance | data3 = {{#if: {{{last|}}} | {{{last|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{last_major|}}} |minor_work={{{last_minor|}}} |issue={{{last_issue|}}} |date={{{last_date|}}} }} }} | label4 = Created by | data4 = {{{creator|}}} | label5 = Based on | data5 = {{{based_on|}}} | label6 = Adapted by | data6 = {{{adapted_by|}}} | label7 = Designed by | data7 = {{{designer|}}} | label8 = Portrayed by | data8 = {{{portrayer|}}} | label9 = Voiced by | data9 = {{{voice|}}} | label10 = Motion capture | data10 = {{{motion_actor|}}} | label11 = {{{lbl1|}}} | data11 = {{{data1|}}} | label12 = {{{lbl2|}}} | data12 = {{{data2|}}} | label13 = {{{lbl3|}}} | data13 = {{{data3|}}} | label14 = {{{lbl4|}}} | data14 = {{{data4|}}} | label15 = {{{lbl5|}}} | data15 = {{{data5|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{race|}}} {{{species|}}} {{{gender|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{alignment|}}} {{{fighting_style|}}} {{{weapon|}}} {{{family|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{origin|}}} {{{home|}}} {{{nationality|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} | {{If empty |{{{info-hdr|}}} |In-universe information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = {{#if: {{{alias|}}} | Alias | Aliases }} | data22 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label23 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data23 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label24 = {{#if: {{{race|}}} | Race | Species }} | data24 = {{If empty |{{{race|}}} |{{{species|}}} }} | label25 = Gender | data25 = {{{gender|}}} | label26 = Title | data26 = {{{title|}}} | label27 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data27 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label28 = {{#if: {{{affiliation|}}} | Affiliation | Alignment }} | data28 = {{If empty |{{{affiliation|}}} |{{{alignment|}}} }} | label29 = Fighting style | data29 = {{{fighting_style|}}} | label30 = Weapon | data30 = {{{weapon|}}} | label31 = Family | data31 = {{{family|}}} | label32 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data32 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label33 = {{#if: {{{significant_other|}}} | Significant other | Significant others }} | data33 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label34 = Children | data34 = {{{children|}}} | label35 = Relatives | data35 = {{{relatives|}}} | label36 = Religion | data36 = {{{religion|}}} | label37 = {{#if: {{{origin|}}} | Origin | Home }} | data37 = {{If empty |{{{origin|}}} |{{{home|}}} }} | label38 = Nationality | data38 = {{{nationality|}}} | label39 = {{{lbl21|}}} | data39 = {{{data21|}}} | label40 = {{{lbl22|}}} | data40 = {{{data22|}}} | label41 = {{{lbl23|}}} | data41 = {{{data23|}}} | label42 = {{{lbl24|}}} | data42 = {{{data24|}}} | label43 = {{{lbl25|}}} | data43 = {{{data25|}}} | header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 3ce93cfa3dfb9b4b9608b850f3d4e6ac282b3bc9 Thunder, Ice, and Everything Nice Wiki 0 2 240 12 2023-11-02T21:05:57Z Gingerdanger 2 wikitext text/x-wiki <mainpage-leftcolumn-start /> <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, and threaten to snare them in a web of ice and magic. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpeg|link=The Banes of Thunder|[[The Banes of Thunder]] File:Placeholder|link=A Crucial Item| [[The Crown of Neverwinter]] File:Sword Coast.png|link=The Sword Coast| [[The Sword Coast]] File:Placeholder|link=A Main Character| [[Neverwinter]] File:Placeholder|link=An Important Location| [[The Feywild]] File:Placeholder|link=A Key Event| [[Courts of the Fey]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> <mainpage-endcolumn /> 8e981f573f37c9666f17adc0205a04eeffb6d816 Template:Infobox 10 178 244 2023-11-02T21:16:33Z Gingerdanger 2 Created page with "{{#invoke:Infobox|infobox}}<noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki {{#invoke:Infobox|infobox}}<noinclude> {{documentation}} </noinclude> 627ee6fcf4d4f108fe054b5c476201cad0ed7717 576 244 2023-11-02T21:46:29Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{#invoke:Infobox|infobox}}<noinclude> {{documentation}} </noinclude> 627ee6fcf4d4f108fe054b5c476201cad0ed7717 Template:Infobox/doc 10 343 578 577 2023-11-02T21:46:29Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{Documentation subpage}} This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[w:Help:Infobox]] contains an introduction about the recommended content and design of infoboxes. == Usage == Usage is similar to {{tl|navbox}}, but with an additional distinction. Each row on the table can contain either a header, or a label/data pair, or just a data cell. These are mutually exclusive states so if you define a row with both a header and a label/data pair, the label/data pair is ignored. To insert an image somewhere other than at the top of the infobox, or to insert freeform data, use a row with only a data field. == Optional control parameters == ; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox, pointing to the named page. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however this is rarely what you want, because it will send users clicking these links in an infobox in an article to the template code rather than the data in the infobox that they probably want to change. ; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it. ; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes". ; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it. == Content parameters == === Title === There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts as a caption it on top of the table. You can use both of them together if you like, or just one or the other, or even neither (though this is not recommended): ; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For accessibility reasons, this is the most recommended alternative. ; above : Text to put within the uppermost cell of the table. ; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images. Examples: {{Infobox | name = Infobox/doc | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | title = Text in caption over infobox | subheader = Subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} {{Infobox | name = Infobox/doc | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | above = Text in uppermost cell of infobox | subheader = Subheader of the infobox | subheader2 = Second subheader of the infobox | header = (the rest of the infobox goes here) }} </pre>{{clear}} === Illustration images === ; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. ; caption(n) : Text to put underneath the images. === Main data === ; header(n) : Text to use as a header in row n. ; label(n) : Text to use as a label in row n. ; data(n) : Text to display as data in row n. Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a header''(n)'' parameter will cause the corresponding data''(n)'' (and rowclass''(n)'' label''(n)'', see below) parameters to be ignored; the absence of a data''(n)'' parameters will cause the corresponding label''(n)'' parameters to be ignored. Valid combinations for any single row are: * |class''(n)''= |header''(n)''= * |rowclass''(n)'= |class''(n)''= |data''(n)''= * |rowclass''(n)''= |label''(n)''= |class''(n)''= data''(n)''= See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below. ==== Number ranges ==== To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example: <pre style="overflow:auto"> | header3 = Section 1 | label5 = Label A | data5 = Data A | label7 = Label C | data7 = Data C | header10 = Section 2 | label12 = Label D | data12 = Data D </pre>{{clear}} ==== Making data fields optional ==== A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so: <pre style="overflow:auto"> | label5 = Population | data5 = {{{population|}}} </pre>{{clear}} This way if an article doesn't define the population parameter in its infobox the row won't be displayed. For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'": <pre style="overflow:auto"> | label6 = Mass | data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }} </pre>{{clear}} For more on #if, see [[mw:Help:Extension:ParserFunctions##if|here]]. ==== Hiding headers when all data fields are hidden ==== You can also make headers optional in a similar way. Consider this example: {{Infobox | title = Example of an undesirable header | header1 = Undesirable header | label2 = Item 1 | data2 = | label3 = Item 2 | data3 = | label4 = Item 3 | data4 = | header5 = Static header | label6 = Static item | data6 = Static value }} <pre style="overflow:auto"> {{Infobox | title = Example of an undesirable header | header1 = Undesirable header | label2 = Item 1 | data2 = | label3 = Item 2 | data3 = | label4 = Item 3 | data4 = | header5 = Static header | label6 = Static item | data6 = Static value }} </pre>{{clear}} If you want the first header to appear only if one or more of the data fields that fall under it are filled, one could use the following pattern as an example of how to do it: {{Infobox | title = Example of an optional header | header1 = {{ #if: {{{item1|}}}{{{item2|}}}{{{item3|}}} | Optional header }} | label2 = Item 1 | data2 = {{{item1|}}} | label3 = Item 2 | data3 = {{{item2|}}} | label4 = Item 3 | data4 = {{{item3|}}} | header5 = Static header | label6 = Static item | data6 = Static value }} <pre style="overflow:auto"> {{Infobox | title = Example of an optional header | header1 = {{ #if: {{{item1|}}}{{{item2|}}}{{{item3|}}} | Optional header }} | label2 = Item 1 | data2 = {{{item1|}}} | label3 = Item 2 | data3 = {{{item2|}}} | label4 = Item 3 | data4 = {{{item3|}}} | header5 = Static header | label6 = Static item | data6 = Static value }} </pre>{{clear}} header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next static content. The trick to this is that the "#if" returns false only if there is nothing whatsoever in the conditional section, so only if all three of item1, item2 and item3 are undefined will the if statement fail. Note that such trick may be sometimes very complex to test if there are many data items whose value depends on complex tests (or when a data row is generated by a recursive invocation of this template as a [[#Subboxes|subbox]]). Ideally, the Lua module supporting this template should now support a new way to make each header row autohideable by detecting if there is at least one non-empty data row after that header row (a parameter like "autohide header1 = yes", for example, would remove the need to perform the "#if" test so that we can just to define "header1 = Optional header"), === Footer === ; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information. == Presentation parameters == === Italic titles === Titles of articles with infoboxes may be made italic by passing the <code>italic title</code> parameter. * Turn on italic titles by passing |italic title=<nowiki>{{{italic title|}}}</nowiki> from the infobox. * Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing |italic title=<nowiki>{{{italic title|no}}}</nowiki> * Do not make any titles italic by not passing the parameter at all. === CSS styling === ; bodystyle : Applies to the infobox table as a whole ; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox. ; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle. ; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future. ; captionstyle : Applies to the text of the image caption. ; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row. ; headerstyle : Applies to all header cells ; labelstyle : Applies to all label cells ; datastyle : Applies to all data cells ; belowstyle : Applies only to the below cell === HTML classes and microformats === ; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole. ; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption. <!-- currently not implemented in Lua module ; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on. --> ; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell. ; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on. ; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''. ; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on. ; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''. ; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells. ; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect. <!-- currently not implemented in Lua module ; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on. --> ; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell. This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others beig used for microformats. To flag an infobox as containing [[w:hCard|hCard]] information, for example, add the following parameter: <pre style="overflow:auto"> | bodyclass = vcard </pre>{{clear}} And for each row containing a data cell that's part of the vcard, add a corresponding class parameter: <pre style="overflow:auto"> | class1 = fn | class2 = org | class3 = tel </pre>{{clear}} ...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox. See [[w:microformat]] for more information on microformats in general. == Examples == Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell : {{Infobox |name = Infobox/doc |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = |image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below File:Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} <pre style="overflow:auto"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = |titlestyle = |abovestyle = background:#cfc; |subheaderstyle = |title = Test Infobox |above = Above text |subheader = Subheader above image |subheader2 = Second subheader |imagestyle = |captionstyle = | image = [[File:Example-serious.jpg|200px|alt=Example alt text]] |caption = Caption displayed below Example-serious.jpg |headerstyle = background:#ccf; |labelstyle = background:#ddf; |datastyle = |header1 = Header defined alone | label1 = | data1 = |header2 = | label2 = Label defined alone does not display (needs data, or is suppressed) | data2 = |header3 = | label3 = | data3 = Data defined alone |header4 = All three defined (header, label, data, all with same number) | label4 = does not display (same number as a header) | data4 = does not display (same number as a header) |header5 = | label5 = Label and data defined (label) | data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }} </pre>{{clear}} For this example, the '''bodystyle''' and '''labelstyle''' parameters are used to adjust the infobox width and define a default width for the column of labels: {{Infobox |name = Infobox/doc |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} <pre style="overflow: auto"> {{Infobox |name = {{subst:PAGENAME}} |bodystyle = width:20em |titlestyle = |title = Test Infobox |headerstyle = |labelstyle = width:33% |datastyle = |header1 = | label1 = Label 1 | data1 = Data 1 |header2 = | label2 = Label 2 | data2 = Data 2 |header3 = | label3 = Label 3 | data3 = Data 3 |header4 = Header 4 | label4 = | data4 = |header5 = | label5 = Label 5 | data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |belowstyle = |below = Below text }} </pre>{{clear}} == Embedding == One infobox template can be embedded into another using the |child= parameter or the |embed= parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>. {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | data1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | data2 = {{Infobox | decat = yes | child = yes |title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = {{Infobox | decat = yes | child = yes | title = First subsection | label1= Label 1.1 | data1 = Data 1.1 }} | header2 = {{Infobox | decat = yes | child = yes | title = Second subsection | label1= Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} or, {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} <pre style="overflow:auto"> {{Infobox | title = Top level title | header1 = First subsection {{Infobox | decat = yes | child = yes | label1 = Label 1.1 | data1 = Data 1.1 }} | header2 = Second subsection {{Infobox | decat = yes | child = yes | label1 = Label 2.1 | data1 = Data 2.1 }} | belowstyle = | below = Below text }} </pre>{{clear}} Note that omitting the |title= parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. == Subboxes == An alternative method for embedding is to use |subbox=yes, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table. {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} <source lang="sass" style="overflow:auto"> {{Infobox | headerstyle = background-color:#eee; | labelstyle = background-color:#eee; | header1 = Main 1 | header2 = Main 2 | data3 = {{Infobox | subbox = yes | headerstyle = background-color:#ccc; | labelstyle = background-color:#ddd; | header1 = Sub 3-1 | header2 = Sub 3-2 | label3 = Label 3-3 | data3 = Data 3-3 }} | data4 = {{Infobox | subbox = yes | labelstyle = background-color:#ccc; | label1 = Label 4-1 | data1 = Data 4-1 }} | label5 = Label 5 | data5 = Data 5 | header6 = Main 6 }} </source>{{clear}} Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes. == Full blank syntax == (Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.) <pre style="overflow:auto"> {{Infobox | name = {{subst:PAGENAME}} | child = {{{child|}}} | subbox = {{{subbox|}}} | italic title = {{{italic title|no}}} | bodystyle = | titlestyle = | abovestyle = | subheaderstyle = | title = | above = | subheader = | imagestyle = | captionstyle = | image = | caption = | image2 = | caption2 = | headerstyle = | labelstyle = | datastyle = | header1 = | label1 = | data1 = | header2 = | label2 = | data2 = | header3 = | label3 = | data3 = | header4 = | label4 = | data4 = | header5 = | label5 = | data5 = | header6 = | label6 = | data6 = | header7 = | label7 = | data7 = | header8 = | label8 = | data8 = | header9 = | label9 = | data9 = | header10 = | label10 = | data10 = | header11 = | label11 = | data11 = | header12 = | label12 = | data12 = | header13 = | label13 = | data13 = | header14 = | label14 = | data14 = | header15 = | label15 = | data15 = | header16 = | label16 = | data16 = | header17 = | label17 = | data17 = | header18 = | label18 = | data18 = | header19 = | label19 = | data19 = | header20 = | label20 = | data20 = | belowstyle = | below = }} </pre>{{clear}} ==See also== * [[Module:Infobox]], the [[mw:Lua/Overview|Lua]] module on which this template is based * [[w:Wikipedia:List of infoboxes|List of infoboxes]] 38686ab37d436b2158042649ea6e552897fbcfa5 Template:Infobox Miraheze user 10 344 580 579 2023-11-02T21:46:30Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{Infobox | bodyclass = vcard | bodystyle = {{#if:{{{fontcolor|}}}|color: {{{fontcolor}}};}} {{#if:{{{width|}}}|width: {{{width}}};}} {{#if:{{{tablecolor|}}}|background-color: {{{tablecolor}}}}} | headerstyle = {{#if:{{{color|}}}|background-color: {{{color}}}}}; {{#if:{{{headerfontcolor|}}}|color: {{{headerfontcolor}}}}} | abovestyle = {{#if:{{{abovecolor|}}}|background-color: {{{abovecolor}}}|}}; {{#if:{{{abovefontcolor|}}}|color: {{{abovefontcolor}}}|}} | title = <includeonly>{{#if:{{{abovefontcolor|}}}||{{{title|{{BASEPAGENAME}}}}} {{#if:{{{status|}}}|<br /><small>{{{status}}}</small>}}}}</includeonly> | above = {{#if:{{{abovefontcolor|}}}|{{{title|{{BASEPAGENAME}}}}} {{#if:{{{status|}}}|<br /><small>{{{status}}}</small>}}}} | subheader = —&nbsp;<span class="role">{{#if:{{{role|}}}|{{{role}}}|[[:metawiki:|Mirahezian]]}}</span>&nbsp;{{#switch:{{lc:{{{gender|{{Gender:{{#titleparts:{{BASEPAGENAME}}|1}}|m|f|NONE}}}}}}}|male|m=<abbr class="gender" style="font-size: larger;" title="<nowiki>male</nowiki>">&#9794;</abbr>[[Category:Male Mirahezians]]&nbsp;|female|f=<abbr class="gender" style="font-size: larger;" title="<nowiki>female</nowiki>">&#9792;</abbr>[[Category:Female Mirahezians]]&nbsp;|other|o=<abbr class="gender" title="<nowiki>other gender</nowiki>"><span style="line-height: 12px;">[[File:Gendersign.svg|x12px|alt=other gender|link=]]</span></abbr>&nbsp;||none=|#default=<span style="line-height: 12px;">[[File:Gendersign.svg|x12px|alt={{{gender}}}|link=]]</span></abbr>&nbsp;}} | image = {{#if:{{{image|}}}|[[File:{{{image|}}}|{{{image_width|238px}}}|{{{image_caption|}}}]]}} | caption = {{{image_caption|}}} | label1 = Name | data1 = {{#if:{{{honorific prefix|{{{honorific_prefix|}}}}}}|<span class="honorific-prefix">{{{honorific prefix|{{{honorific_prefix|}}}}}}&nbsp;</span>}}{{#if:{{{name|}}}|<includeonly><span class="fn">{{{name|}}}</span></includeonly>}}{{#if:{{{honorific suffix|{{{honorific_suffix|}}}}}}|&nbsp;<span class="honorific-suffix">{{{honorific suffix|{{{honorific_suffix|}}}}}}</span>}} | label2 = Born | data2 = {{#if:{{{birthname|{{{birth_name|}}}}}}|<span class="nickname">{{{birthname|{{{birth_name}}}}}}</span>}} {{{birthdate|{{{birth_date|}}}}}} {{#if:{{{birthplace|{{{birth_place|}}}}}}|<span class="birthplace">{{{birthplace|{{{birth_place}}}}}}</span>}} | label3 = Name in real life | data3 = {{{real_name|}}} | class3 = nickname | label4 = Gender | data4 = {{{custom_gender|}}} | label5 = Preferred pronoun | data5 = {{{pronoun|}}} | label6 = Nationality | data6 = {{{nationality|}}} | class6 = category | label7 = Country | data7 = {{ucfirst:{{{country|}}}}} | label8 = Current&nbsp;location | data8 = {{{location|}}} | class8 = label | label9 = Languages | data9 = {{{languages|}}} | class9 = category | label10 = Time&nbsp;zone | data10 = {{{timezone|}}} | label11 = Current&nbsp;time | data11 = {{{current_time|}}} | label13 = Ethnicity | data13 = {{{ethnicity|}}} | class13 = category | label14 = Race | data14 = {{{race|}}} | class14 = category | label15 = Height | data15 = {{{height|}}} | label16 = Weight | data16 = {{{weight|}}} | label17 = Hair | data17 = {{{hair|}}} | label18 = Eyes | data18 = {{{eyes|}}} | label19 = [[w:Handedness|Handedness]] | data19 = {{{handedness|}}} | label20 = [[w:Blood type|Blood&nbsp;type]] | data20 = {{{blood_type|}}} | label21 = Sexuality | data21 = {{{sexuality|}}} | class21 = category | label22 = [[w:Intelligence quotient|IQ]] | data22 = {{{iq|}}} | label23 = [[w:Myers–Briggs Type Indicator|Personality&nbsp;type]] | data23 = {{{personality_type|}}} | class23 = category | label24 = {{#switch:{{lc:{{{alignment|}}}}}|lawful good|neutral good|chaotic good|lawful neutral|neutral|true neutral|chaotic neutral|lawful evil|neutral evil|chaotic evil=[[w:Alignment (Dungeons & Dragons)|Alignment]]|light side|lightside|light|jedi|dark side|darkside|dark|sith=[[w:Alignment (role-playing games)#Star Wars|Alignment]]|#default=[[w:Alignment (role-playing games)|Alignment]]}} | data24 = {{#switch:{{lc:{{{alignment|}}}}}|lawful good|neutral good|chaotic good|lawful neutral|neutral|true neutral|chaotic neutral|lawful evil|neutral evil|chaotic evil=[[{{{alignment|}}}]]|light side|lightside|light|jedi=[[w:Force (Star Wars)|Light Side]]|dark side|darkside|dark|sith=[[w:Dark side (Star Wars)|Dark Side]]|#default={{{alignment|}}}}} | class24 = category | header25 = {{#if:{{{marital status|}}}{{{spouse|}}}{{{girlfriend|}}}{{{boyfriend|}}}{{{children|}}}{{{siblings|}}}{{{pets|}}}|Family and friends}} | label26 = Marital&nbsp;status | data26 = {{{marital status|}}} | class26 = category | label27 = Spouse | data27 = {{{spouse|{{{partner|}}}}}} | label28 = Girlfriend | data28 = {{{girlfriend|}}} | label29 = Boyfriend | data29 = {{{boyfriend|}}} | label30 = Children | data30 = {{{children|}}} | label31 = Siblings | data31 = {{{siblings|}}} | label32 = Parents | data32 = {{{parents|}}} | label33 = Pets | data33 = {{{pets|}}} | header34 = {{#if:{{{occupation|}}}{{{employer|}}}{{{education|}}}{{{college|}}}{{{university|}}}{{{highschool|}}}|Education and employment}} | label35 = Occupation | data35 = {{{occupation|}}} | class35 = role | label36 = Employer | data36 = {{{employer|}}} | class36 = org | label37 = Education | data37 = {{{education|}}} | label38 = Primary school | data38 = {{{primaryschool|}}} | label39 = Intermediate school | data39 = {{{intschool|}}} | label40 = High school | data40 = {{{highschool|}}} | label41 = College | data41 = {{{college|}}} | label42 = University | data42 = {{{university|}}} | label43 = Classes | data43 = {{{classes|}}} | header44 = {{#if:{{{hobbies|}}}{{{religion|}}}{{{politics|}}}{{{aliases|}}}{{{movies|}}}{{{books|}}}|Hobbies, favourites and beliefs}} | label45 = Hobbies | data45 = {{{hobbies|}}} | label46 = Religion | data46 = {{{religion|}}} | class46 = category | label47 = Politics | data47 = {{{politics|}}} | label48 = [[w:Pseudonym|Aliases]] | data48 = {{{aliases|}}} | class48 = nickname | label49 = Movies | data49 = {{{movies|}}} | label50 = Shows | data50 = {{{shows|}}} | label51 = Books | data51 = {{{books|}}} | header52 = {{#if:{{{interests|}}}|Interests}} | data53 = {{#if:{{{interests|}}}|<div style="text-align: left"> {{{interests|}}} </div>}} | header54 = {{#if:{{{website|}}}{{{blog|}}}{{{email|}}}{{{icq|}}}{{{aim|}}}{{{gtalk|}}}{{{jabber|}}}{{{skype|}}}{{{mac|}}}{{{irc|}}}{{{facebook|}}}{{{google+|}}}{{{instagram|}}}{{{linkedin|}}}{{{myspace|}}}{{{pinterest|}}}{{{twitter|}}}{{{youtube|}}}{{{flickr|}}}|Contact info}} | label55 = Website | data55 = {{{website|}}} | label56 = Blog | data56 = {{{blog|}}} | label57 = Email | data57 = {{{email|}}} | label58 = [[w:ICQ|ICQ]] | data58 = {{#if:{{{icq|}}}|[https://people.icq.com/people/about_me.php?uin={{urlencode:{{{icq}}}}} {{{icq}}}]}} | label59 = [[w:AOL Instant Messenger|AIM]] | data59 = {{{aim|}}} | label60 = [[w:GTalk|GTalk]] | data60 = {{{gtalk|}}} | label61 = [[w:Extensible Messaging and Presence Protocol|XMPP]] | data61 = {{{jabber|}}} | label62 = [[w:Skype|Skype]] | data62 = {{{skype|}}} | label63 = .Mac | data63 = {{{mac|}}} | label64 = [[w:IRC|IRC]] | data64 = {{{irc|}}} | label65 = [[w:Facebook|Facebook]] | data65 = {{#if:{{{facebook|}}}|[https://www.facebook.com/{{urlencode:{{{facebook}}}}} {{{facebook}}}]}} | label67 = [[w:Instagram|Instagram]] | data67 = {{#if:{{{instagram|}}}|[https://www.instagram.com/{{urlencode:{{{instagram}}}}} {{{instagram}}}]}} | label68 = [[w:LinkedIn|LinkedIn]] | data68 = {{#if:{{{linkedin|}}}|[https://www.linkedin.com/profile/view?&name={{urlencode:{{{linkedin}}}}} {{{linkedin}}}]}} | label69 = [[w:Myspace|Myspace]] | data69 = {{{myspace|}}} | label70 = [[w:Pinterest|Pinterest]] | data70 = {{{pinterest|}}} | label71 = [[w:Twitter|Twitter]] | data71 = {{#if:{{{twitter|}}}|[https://twitter.com/{{urlencode:{{{twitter}}}}} {{{twitter}}}]}} | label72 = [[w:YouTube|YouTube]] | data72 = {{#if:{{{youtube|}}}|[https://www.youtube.com/user/{{urlencode:{{{youtube}}}}} {{{youtube}}}]}} | label73 = [[w:Flickr|Flickr]] | data73 = {{#if:{{{flickr|}}}|[https://www.flickr.com/photos/{{urlencode:{{{flickr}}}}} {{{flickr}}}]}} | header74 = {{#if:{{{subpages|}}}|[[Special:Prefixindex/User:{{BASEPAGENAMEE}}|{{BASEPAGENAME}} subpages]]}} | data75 = {{#if:{{{subpages|}}}|<div style="text-align: left"> {{{subpages|}}} </div>}} | header76 = {{#if:{{{joined_date|}}}{{{first_edit|}}}{{{edit_count|}}}{{{permissions|}}}|Account statistics}} | label77 = Joined | data77 = {{{joined_date|}}} | label78 = First edit | data78 = {{{first_edit|}}} | label79 = {{#if:{{{autoconfirmed|}}}|{{#if:{{{confirmed|}}}|Confirmed<br />}}Autoconfirmed|{{#if:{{{confirmed|}}}|Confirmed}}}} | data79 = {{#if:{{{autoconfirmed|}}}|{{#if:{{{confirmed|}}}|{{{confirmed}}}<br />}}{{{autoconfirmed}}}|{{#if:{{{confirmed|}}}|{{{confirmed}}}}}}} | label90 = Administrator | data90 = {{{admin|}}} | label91 = Bureaucrat | data91 = {{{bureaucrat|}}} | label95 = {{#if:{{{permissions|}}}|<span class="plainlinks">[{{fullurl:Special:ListUsers|limit=1&username={{ROOTPAGENAMEE}}}} Permissions]</span>}} | data95 = {{{permissions|}}} | label98 = Signature | data98 = {{{signature|}}} | data101 = {{{module|}}} | data102 = {{{module2|}}} | data103 = {{{module3|}}} | header104 = {{#if:{{{userboxes|}}}|Userboxes}} | data105 = {{#if:{{{userboxes|}}}| <table style="background: transparent; vertical-align: middle !important; text-align: center; font-size: 95%; color: {{{fontcolor|#000000}}}; margin: auto; border-spacing: 0px; border-collapse: collapse;"> <tr><td> {{{userboxes|}}} </td></tr> </table> }} | header106 = {{{custom_header|}}} | data107 = {{#if:{{{custom_data|}}}|<div style="text-align: left"> {{{custom_data|}}} </div>}} | label111 = {{{custom_label1|}}} | data111 = {{{custom_data1|}}} | label112 = {{{custom_label2|}}} | data112 = {{{custom_data2|}}} | label113 = {{{custom_label3|}}} | data113 = {{{custom_data3|}}} | label114 = {{{custom_label4|}}} | data114 = {{{custom_data4|}}} | label115 = {{{custom_label5|}}} | data115 = {{{custom_data5|}}} | label116 = {{{custom_label6|}}} | data116 = {{{custom_data6|}}} | label117 = {{{custom_label7|}}} | data117 = {{{custom_data7|}}} | label118 = {{{custom_label8|}}} | data118 = {{{custom_data8|}}} | label119 = {{{custom_label9|}}} | data119 = {{{custom_data9|}}} }}<noinclude>{{Documentation}}{{En-WP attribution notice|Template:Infobox Wikipedia user}}</noinclude> 5c833d57c9e7f404beac918c3b0cae721506bd7f Template:Infobox Miraheze user/doc 10 345 582 581 2023-11-02T21:46:31Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE. --> == Usage == Copy and paste the template below. All parameters are optional. Parameter names '''must''' be in lower case. {{Infobox Miraheze user <!-- INFOBOX FORMATTING --------> | abovecolor = | color = | fontcolor = | abovefontcolor = | headerfontcolor = | tablecolor = <!-- LEAD INFORMATION ----------> | status = {{{status}}} | image = Echo_thanks.svg | image_caption = {{{image_caption}}} | honorific_prefix = {{{honorific_prefix}}} | name = {{{name}}} | honorific_suffix = {{{honorific_suffix}}} | role = {{{role}}} | birthname = {{{birthname}}} | real_name = {{{real_name}}} | gender = {{{gender}}} | custom_gender = {{{custom_gender}}} | pronoun = {{{pronoun}}} | languages = {{{languages}}} | birthdate = {{{birthdate}}} | birthplace = {{{birthplace}}} | location = {{{location}}} | country = {{{country}}} | timezone = {{{timezone}}} | current_time = {{{current_time}}} | nationality = {{{nationality}}} | ethnicity = {{{ethnicity}}} | race = {{{race}}} | height = {{{height}}} | weight = {{{height}}} | hair = {{{hair}}} | eyes = {{{eyes}}} | handedness = {{{handedness}}} | blood_type = {{{blood_type}}} | sexuality = {{{sexuality}}} | iq = {{{iq}}} | personality_type = {{{personality_type}}} | alignment = {{{alignment}}} <!-- FAMILY & FRIENDS ----------> | marital status = {{{marital status}}} | spouse = {{{spouse}}} | girlfriend = {{{girlfriend}}} | boyfriend = {{{boyfriend}}} | parents = {{{parents}}} | children = {{{children}}} | siblings = {{{siblings}}} | pets = {{{pets}}} <!-- EDUCATION & EMPLOYMENT ----> | occupation = {{{occupation}}} | employer = {{{employer}}} | education = {{{education}}} | primaryschool = {{{primaryschool}}} | intschool = {{{intschool}}} | highschool = {{{highschool}}} | college = {{{college}}} | university = {{{university}}} | classes = {{{classes}}} <!-- INTERESTS & BELIEFS -------> | hobbies = {{{hobbies}}} | religion = {{{religion}}} | politics = {{{politics}}} | aliases = {{{aliases}}} | movies = {{{movies}}} | shows = {{{shows}}} | books = {{{books}}} | interests = {{{interests}}} <!-- CONTACT INFO --------------> | website = {{{website}}} | blog = {{{blog}}} | email = {{{email}}} | icq = {{{icq}}} | aim = {{{aim}}} | gtalk = {{{gtalk}}} | jabber = {{{jabber}}} | skype = {{{skype}}} | msn = {{{msn}}} | yahoo = {{{yahoo}}} | mac = {{{mac}}} | irc = {{{irc}}} | facebook = {{{facebook}}} | google+ = {{{google+}}} | instagram = {{{instagram}}} | linkedin = {{{linkedin}}} | myspace = {{{myspace}}} | pinterest = {{{pinterest}}} | twitter = {{{twitter}}} | youtube = {{{youtube}}} | flickr = {{{flickr}}} <!-- SUBPAGES -----------------> | subpages = {{{subpages}}} <!-- ACCOUNT STATISTICS -------> | joined_date = {{{joined_date}}} | first_edit = {{{first_edit}}} | autoconfirmed = {{{autoconfirmed}}} | edit_count = {{{edit_count}}} | permissions = {{{permissions}}} | signature = {{{signature}}} <!-- USERBOXES ----------------> | userboxes = {{{userboxes}}} <!-- CUSTOM FIELDS ------------> | custom_header = {{{custom_header}}} | custom_data = {{{custom_data}}} | custom_label1 = {{{custom_label1}}} | custom_data1 = {{{custom_data1}}} | custom_label2 = {{{custom_label2}}} | custom_data2 = {{{custom_data2}}} | custom_label3 = {{{custom_label3}}} | custom_data3 = {{{custom_data3}}} | custom_label4 = {{{custom_label4}}} | custom_data4 = {{{custom_data4}}} | custom_label5 = {{{custom_label5}}} | custom_data5 = {{{custom_data5}}} | custom_label6 = {{{custom_label6}}} | custom_data6 = {{{custom_data6}}} | custom_label7 = {{{custom_label7}}} | custom_data7 = {{{custom_data7}}} | custom_label8 = {{{custom_label8}}} | custom_data8 = {{{custom_data8}}} | custom_label9 = {{{custom_label9}}} | custom_data9 = {{{custom_data9}}} }} <pre style="overflow: auto"> {{Infobox Miraheze user <!-- INFOBOX FORMATTING --------> | abovecolor = | color = | fontcolor = | abovefontcolor = | headerfontcolor = | tablecolor = <!-- LEAD INFORMATION ----------> | title = <!-- optional, defaults to {{BASEPAGENAME}} --> | status = | image = | image_caption = | image_width = | name = | birthname = | real_name = | gender = <!-- used to display icon at top. Supports male, female, other, or a custom value. --> | custom_gender = <!-- used to display "Gender" field in list --> | pronoun = | languages = | birthdate = | birthplace = | location = | country = | timezone = | current_time = <!-- example for San Francisco: {{current time|UTC-8}} --> | nationality = | ethnicity = | race = | height = | weight = | hair = | eyes = | handedness = | blood_type = | sexuality = | iq = | personality_type = | alignment = <!-- FAMILY & FRIENDS ----------> | marital status = | spouse = | girlfriend = | boyfriend = | children = | siblings = | parents = | pets = <!-- EDUCATION & EMPLOYMENT ----> | occupation = | employer = | education = | primaryschool = | intschool = | highschool = | college = | university = | classes = <!-- For use with Miraheze Campus Ambassadors --> <!-- INTERESTS & BELIEFS -------> | hobbies = | religion = | politics = | aliases = | movies = | shows = | books = | interests = <!-- CONTACT INFO --------------> | website = <!-- {{URL|example.com}} --> | blog = <!-- {{URL|example.com}} --> | email = <!-- {{no spam|account|example.com}} --> | icq = | aim = | gtalk = | jabber = | skype = | msn = | yahoo = | mac = | irc = | facebook = | google+ = | instagram = | linkedin = | myspace = | pinterest = | twitter = | youtube = | flickr = <!-- SUBPAGES -----------------> | subpages = <!-- ACCOUNT STATISTICS -------> | joined_date = | first_edit = | autoconfirmed = <!-- overrides confirmed parameter --> | confirmed = <!-- may be used in place of autoconfirmed parameter (displays "Confirmed" as label) --> | edit_count = | permissions = | signature = <!-- USERBOXES ----------------> | userboxes = <!-- CUSTOM FIELDS ------------> | custom_header = | custom_data = | custom_label1 = | custom_data1 = | custom_label2 = | custom_data2 = | custom_label3 = | custom_data3 = | custom_label4 = | custom_data4 = | custom_label5 = | custom_data5 = | custom_label6 = | custom_data6 = | custom_label7 = | custom_data7 = | custom_label8 = | custom_data8 = | custom_label9 = | custom_data9 = }} </pre> {{clear}} ==Example== {{Infobox Miraheze user | name = Miraheze user | birthdate = January 1, 1986 | birthplace = Dearborn, MI | country = United States | nationality = American | race = Caucasian | gender = Female | location = Houghton, MI | eyes = Brown | blood_type = Type O | sexuality = Heterosexual | iq = 136 | height = 5'8" | weight = 116 lbs. | timezone = Central Time Zone | pets = 2 dogs <!-- If you are supposed to put pet names, please fix this--> | children = 1 | marital status = Married | occupation = Clerk | highschool = Dearborn High School | college = Henry Ford Community College | hobbies = Camping, cooking | religion = Presbyterian]] | politics = Democrat | movies = Forrest Grump, Avatar | shows = Friends, The Big Bang Theory | books = Harry Potter | interests = History, Computers, Engineering | joined_date = June 3, 2007 | userboxes = {{GitBox}} }} <!-- Please add more to the above --> <pre style="overflow: auto"> {{Infobox Miraheze user | name = Miraheze user | birthdate = January 1, 1986 | birthplace = Dearborn, MI | country = United States | nationality = American | race = Caucasian | gender = Female | location = Houghton, MI | eyes = Brown | blood_type = Type O | sexuality = Heterosexual | iq = 136 | height = 5'8" | weight = 116 lbs. | timezone = Central Time Zone | pets = 2 dogs | children = 1 | marital status = Married | occupation = Clerk | highschool = Dearborn High School | college = Henry Ford Community College | hobbies = Camping, cooking | religion = Presbyterian]] | politics = Democrat | movies = Forrest Grump, Avatar | shows = Friends, The Big Bang Theory | books = Harry Potter | interests = History, Computers, Engineering | joined_date = June 3, 2021 | userboxes = {{GitBox}} }} </pre> {{clear}} == TemplateData == <templatedata> { "description": "Infobox about yourself. This template should only be used on user pages.", "params": { "status": { "label": "Status" }, "image_caption": { "label": "Image caption" }, "honorific_prefix": { "label": "Honorific Prefix" }, "name": { "label": "Name" }, "honorific_suffix": { "label": "Honorific Suffix" }, "role": { "label": "Role" }, "birthname": { "label": "Birth name" }, "real_name": { "label": "Real name" }, "gender": { "label": "Gender" }, "custom_gender": { "label": "Custom gender" }, "pronoun": { "label": "Preferred pronoun" }, "languages": { "label": "Language" }, "birthdate": { "label": "Birthdate" }, "birthplace": { "label": "Birthplace" }, "location": { "label": "Location" }, "country": { "label": "Country" }, "timezone": { "label": "Timezone" }, "current_time": { "label": "Current Time" }, "nationality": { "label": "Nationality" }, "ethnicity": { "label": "Ethnicity" }, "race": { "label": "Race" }, "height": { "label": "Height" }, "weight": { "label": "Weight" }, "hair": { "label": "Hair" }, "eyes": { "label": "Eyes" }, "handedness": { "label": "Handedness" }, "blood_type": { "label": "Blood Type" }, "sexuality": { "label": "Sexuality" }, "iq": { "label": "IQ" }, "personality_type": { "label": "Personality Type" }, "alignment": { "label": "Alignment" }, "marital status": { "label": "Marital Status" }, "spouse": { "label": "Spouse" }, "girlfriend": { "label": "Girlfriend" }, "boyfriend": { "label": "Boyfriend" }, "parents": { "label": "Parents" }, "children": { "label": "Children" }, "siblings": { "label": "Siblings" }, "pets": { "label": "Pets" }, "occupation": { "label": "Occupation" }, "employer": { "label": "Employer" }, "education": { "label": "Education" }, "primaryschool": { "label": "Primary School" }, "intschool": { "label": "Intermediate School" }, "highschool": { "label": "High School" }, "college": { "label": "College" }, "university": { "label": "University" }, "classes": { "label": "Classes" }, "hobbies": { "label": "Hobbies" }, "religion": { "label": "Religion" }, "politics": { "label": "Politics" }, "aliases": { "label": "Aliases" }, "movies": { "label": "Movies" }, "shows": { "label": "Shows" }, "books": { "label": "Books" }, "interests": { "label": "Interests" }, "website": { "label": "Website" }, "blog": { "label": "Blog" }, "email": { "label": "Email" }, "icq": { "label": "ICQ" }, "aim": { "label": "AIM" }, "gtalk": { "label": "GTalk" }, "jabber": { "label": "Jabber" }, "skype": { "label": "Skype" }, "msn": { "label": "MSN" }, "yahoo": { "label": "Yahoo" }, "mac": { "label": "Mac" }, "irc": { "label": "IRC" }, "facebook": { "label": "Facebook" }, "google+": { "label": "Google+" }, "instagram": { "label": "Instagram" }, "linkedin": { "label": "LinkedIn" }, "pinterest": { "label": "Pinterest" }, "twitter": { "label": "Twitter" }, "youtube": { "label": "YouTube" }, "flickr": { "label": "Flickr" }, "subpages": { "label": "Subpages" }, "joined_date": { "label": "Joined Date" }, "first_edit": { "label": "First Edit" }, "admin": { "label": "Date granted sysop" }, "bureaucrat": { "label": "Date granted bureaucrat" }, "edit_count": { "label": "Edit Count" }, "permissions": { "label": "Permissions" }, "signature": { "label": "Signature" }, "userboxes": { "label": "User boxes" } } } </templatedata> e5cb5aa9d7358ffc1e186b327fc6688f7a35e2dc Template:Documentation 10 5 588 587 2023-11-02T21:46:33Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 9885bb4fa99bf3d5b960e73606bbb8eed3026877 Template:Documentation subpage 10 347 590 589 2023-11-02T21:46:34Z Gingerdanger 2 1 revision imported wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = '''This is a documentation subpage''' for '''{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br/> It contains usage information, [[mw:Help:Categories|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} | page}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 471e685c1c643a5c6272e20e49824fffebad0448 Module:Arguments 828 348 592 591 2023-11-02T21:46:34Z Gingerdanger 2 1 revision imported Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Documentation 828 349 594 593 2023-11-02T21:46:35Z Gingerdanger 2 1 revision imported Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 78cc3a78f2b5dbb267fa16027c0800a22dbd3c42 Module:Documentation/config 828 350 596 595 2023-11-02T21:46:35Z Gingerdanger 2 1 revision imported Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 Template:Template link 10 352 600 599 2023-11-02T21:46:37Z Gingerdanger 2 1 revision imported wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Template:Tl 10 353 602 601 2023-11-02T21:46:37Z Gingerdanger 2 1 revision imported wikitext text/x-wiki #REDIRECT [[Template:Template link]] fb9a6b420e13178e581af6e7d64274cd30a79017 Template:Clear 10 84 604 95 2023-11-02T21:46:38Z Gingerdanger 2 1 revision imported wikitext text/x-wiki <includeonly><div style="clear:{{{1|both}}}"></div></includeonly><noinclude> {{documentation}}</noinclude> 02f4c0e17d50c41f902cad74e6d937f585ba4719 Module:Infobox 828 354 606 605 2023-11-02T21:46:38Z Gingerdanger 2 1 revision imported Scribunto text/plain -- -- This module implements {{Infobox}} -- local p = {} local args = {} local origArgs = {} local root local function notempty( s ) return s and s:match( '%S' ) end local function fixChildBoxes(sval, tt) if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_musical_artist&oldid=849054481 -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end local function union(t1, t2) -- Returns the union of the values of two tables, as a sequence. local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end local function getArgNums(prefix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local function addRow(rowArgs) -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. if rowArgs.header and rowArgs.header ~= '_BLANK_' then root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :attr('id', rowArgs.rowid) :tag('th') :attr('colspan', 2) :attr('id', rowArgs.headerid) :addClass(rowArgs.class) :addClass(args.headerclass) :css('text-align', 'center') :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) elseif rowArgs.data then if not rowArgs.data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then rowArgs.rowstyle = 'display:none' end local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) row:attr('id', rowArgs.rowid) if rowArgs.label then row :tag('th') :attr('scope', 'row') :attr('id', rowArgs.labelid) :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') if not rowArgs.label then dataCell :attr('colspan', 2) :css('text-align', 'center') end dataCell :attr('id', rowArgs.dataid) :addClass(rowArgs.class) :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) end end local function renderTitle() if not args.title then return end root :tag('caption') :addClass(args.titleclass) :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end root :tag('tr') :tag('th') :attr('colspan', 2) :addClass(args.aboveclass) :css('text-align', 'center') :css('font-size', '125%') :css('font-weight', 'bold') :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end root :tag('tr') :tag('td') :attr('colspan', '2') :addClass(args.belowclass) :css('text-align', 'center') :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addRow({ data = args['subheader' .. tostring(num)], datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :cssText(args.captionstyle) :wikitext(caption) end addRow({ data = tostring(data), datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end local function preprocessRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end local function renderRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)], dataid = args['dataid' .. tostring(num)], labelid = args['labelid' .. tostring(num)], headerid = args['headerid' .. tostring(num)], rowid = args['rowid' .. tostring(num)] }) end end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'})) end end local function _infobox() -- Specify the overall layout of the infobox, with special settings -- if the infobox is used as a 'child' inside another infobox. if args.child ~= 'yes' then root = mw.html.create('table') root :addClass((args.subbox ~= 'yes') and 'infobox' or nil) :addClass(args.bodyclass) if args.subbox == 'yes' then root :css('padding', '0') :css('border', 'none') :css('margin', '-3px') :css('width', 'auto') :css('min-width', '100%') :css('font-size', '100%') :css('clear', 'none') :css('float', 'none') :css('background-color', 'transparent') else root :css('width', '22em') end root :cssText(args.bodystyle) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end renderSubheaders() renderImages() if args.autoheaders then preprocessRows() end renderRows() renderBelowRow() renderItalicTitle() return tostring(root) end local function preprocessSingleArg(argName) -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end local function preprocessArgs(prefixTable, step) -- Assign the parameters with the given prefixes to the args table, in order, in batches -- of the step size specified. This is to prevent references etc. from appearing in the -- wrong order. The prefixTable should be an array containing tables, each of which has -- two possible fields, a "prefix" string and a "depend" table. The function always parses -- parameters containing the "prefix" string, but only parses parameters in the "depend" -- table if the prefix parameter is present and non-blank. if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones. preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present and not blank, or -- we are processing "prefix1" and "prefix" is present and not blank, and -- if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end local function parseDataParameters() -- Parse the data parameters in the same order that the old {{infobox}} did, so that -- references etc. will display in the expected places. Parameters that depend on -- another parameter are only processed if that parameter is present, to avoid -- phantom references appearing in article reference lists. preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'}, {prefix = 'dataid'}, {prefix = 'labelid'}, {prefix = 'headerid'}, {prefix = 'rowid'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent preprocessSingleArg('decat') end function p.infobox(frame) -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end function p.infoboxTemplate(frame) -- For calling via #invoke within a template origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p c6ac51f9e2faf9c2f3aba1fb8c05af98db47f4d4 Template:Mbox 10 355 608 607 2023-11-02T21:46:39Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> c262e205f85f774a23f74119179ceea11751d68e Module:Message box 828 356 610 609 2023-11-02T21:46:39Z Gingerdanger 2 1 revision imported Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local templatestyles = 'Module:Message box/styles.css' -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) and not self.isSmall then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end local function templatestyles(frame, src) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. 'CONFIG_MODULE' end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) be00cd389f9f2afcd361e5d5e33622839555cbd9 Module:Message box/configuration 828 357 612 611 2023-11-02T21:46:40Z Gingerdanger 2 1 revision imported Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix'}, }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } c6bd9191861b23e474e12b19c694335c4bc3af5f Module:No globals 828 358 614 613 2023-11-02T21:46:40Z Gingerdanger 2 1 revision imported Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Yesno 828 359 616 615 2023-11-02T21:46:41Z Gingerdanger 2 1 revision imported Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Template:En-WP attribution notice 10 360 618 617 2023-11-02T21:46:42Z Gingerdanger 2 1 revision imported wikitext text/x-wiki <includeonly>{| style="border: 1px solid #e0e0e0; background-color: #f8f8f8; color:black; margin: 5px auto; width: 60%;" |- | style="padding: 3px 10px;" | [[File:Wikipedia-logo-v2.svg|30px|Wikipedia logo]] | style="font-size: 90%; padding: 3px;" | This page uses material from the Wikipedia page [[w:en:{{{1|{{FULLPAGENAME}}}}}|{{{1|{{FULLPAGENAME}}}}}]], which is released under the [[w:en:Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License|Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([https://en.wikipedia.org/w/index.php?title={{urlencode:{{{1|{{FULLPAGENAME}}}}}}}&action=history view authors]). |} [[Category:Pages from English Wikipedia‎]]</includeonly> <noinclude> {{documentation}} {{En-WP attribution notice|Template:En-WP attribution notice}} </noinclude> 22d054cdfdc01cc48994b02dc0ccde4265694650 Template:User github 10 361 620 619 2023-11-02T21:46:42Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{Userbox | id = [[File:GitLogo.png|43px]] | float = {{{float|right}}} | border-c = #808080 | id-c = #FFFFFF | info-c = #DBDBDB | info = {{#if:{{{username|}}}|''{{PAGENAME}}''|This user}} has an account on GitHub{{#if:{{{account|}}}|&#32;as ''[[github:{{{account}}}|{{{account}}}]]''|}}. | nocat = {{{nocat|}}} | usercategory = Users who use GitHub }}<noinclude>{{Documentation}}[[Category:Social media userboxes|{{PAGENAME}}]]</noinclude> 08ef531d5b5a1e69b84939e0fc1f1d0d622f38ad Template:Userbox 10 362 622 621 2023-11-02T21:46:43Z Gingerdanger 2 1 revision imported wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude>{{documentation}}</noinclude> 6813e8e31cadc62df2379b5fae9ea23c23f29e97 Module:Userbox 828 363 624 623 2023-11-02T21:46:44Z Gingerdanger 2 1 revision imported Scribunto text/plain -- This module implements {{userbox}}. local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args[2] or args['info-c'] or '#eeeeee' -- Get info values. data.info = args[4] or args.info or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args[8] or args['info-fc'] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt') data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt') data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt') data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('th') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize) :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('th') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize) :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local function has_text(wikitext) local function get_alt(text) return text:match("|alt=([^|]*)") or "" end wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt) wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt) return mw.text.trim(wikitext) ~= "" end return tostring(root) end function p.categories(args, page) -- Gets categories -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 if #cats > 0 and not require("Module:Yesno")(args.nocat) then -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.main = '[[Category:Pages with misplaced templates]]' if title.namespace == 2 then -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end return user elseif title.namespace == 10 then -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end return template end end end return p aac333efff739f0243d8ffced6f4296cffb8d7e9 Template:GitBox 10 364 626 625 2023-11-02T21:46:45Z Gingerdanger 2 1 revision imported wikitext text/x-wiki #REDIRECT [[Template:User github]] 5619080886a72031f4953c16bc7715c10fe18e26 Template:Para 10 365 628 627 2023-11-02T21:46:45Z Gingerdanger 2 1 revision imported wikitext text/x-wiki <code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 7be5bee75307eae9342bbb9ff3a613e93e93d5a7 Template:Character 10 9 633 20 2023-11-02T22:08:20Z Gingerdanger 2 wikitext text/x-wiki {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} | color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{{image|}}}| | caption = {{{caption|}}} | headerstyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} |color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | label1 = Race | data1 = {{{race|}}} | label2 = Class | data2 = {{{class|}}} | label3 = Subclass | data3 = {{{subclass|}}} | label4 = Player | data4 = {{{creator|}}} | label5 = Art by | data5 = {{{artist|}}} | label6 = STR | data6 = {{{str|}}} | label7 = DEX | data7 = {{{dex|}}} | label8 = CON | data8 = {{{con|}}} | label9 = INT | data9 = {{{int|}}} | label10 = WIS | data10 = {{{wis|}}} | label11 = CHA | data11 = {{{cha|}}} | label12 = Alignment | data12 = {{{alignment|}}} | label13 = {{{lbl2|}}} | data13 = {{{data2|}}} | label14 = {{{lbl3|}}} | data14 = {{{data3|}}} | label15 = {{{lbl4|}}} | data15 = {{{data4|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{race|}}} {{{gender|}}} {{{pronouns|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{hometown|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} {{{data26|}}} {{{data27|}}} {{{data28|}}} {{{data29|}}} {{{data30|}}} | {{If empty |{{{info-hdr|}}} |Personal information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = {{#if: {{{alias|}}} | Alias | Aliases }} | data22 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label23 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data23 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label24 = Gender | data24 = {{{gender|}}} | label25 = Pronouns | data25 = {{{pronouns|}}} | label26 = Title | data26 = {{{title|}}} | label27 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data27 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label28 = Affiliation | data28 = {{{affiliation|}}} | label29 = Relatives | data29 = {{{relatives|}}} | label30 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data30 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label31 = {{#if: {{{significant_other|}}} | Significant other | Significant others }} | data31 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label32 = Children | data32 = {{{children|}}} | label33 = Religion | data33 = {{{religion|}}} | label34 = Hometown | data34 = {{{hometown|}}} | label35 = {{{lbl21|}}} | data35 = {{{data21|}}} | label36 = {{{lbl22|}}} | data36 = {{{data22|}}} | label37 = {{{lbl23|}}} | data37 = {{{data23|}}} | label38 = {{{lbl22|}}} | data38 = {{{data22|}}} | label39 = {{{lbl23|}}} | data39 = {{{data23|}}} | label40 = {{{lbl21|}}} | data40 = {{{data27|}}} | label41 = {{{lbl22|}}} | data41 = {{{data28|}}} | label42 = {{{lbl24|}}} | data42 = {{{data29|}}} | label43 = {{{lbl25|}}} | data43 = {{{data30|}}} | header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> e4e339550fcc66b3c682012aff749328a3513263 635 633 2023-11-02T22:18:18Z Gingerdanger 2 wikitext text/x-wiki {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} | color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{{image|}}}| | caption = {{{caption|}}} | headerstyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} |color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | label1 = Race | data1 = {{{race|}}} | label2 = Class | data2 = {{{class|}}} | label3 = Subclass | data3 = {{{subclass|}}} | label4 = Player | data4 = {{{creator|}}} | label5 = Art by | data5 = {{{artist|}}} | label6 = STR | data6 = {{{str|}}} | label7 = DEX | data7 = {{{dex|}}} | label8 = CON | data8 = {{{con|}}} | label9 = INT | data9 = {{{int|}}} | label10 = WIS | data10 = {{{wis|}}} | label11 = CHA | data11 = {{{cha|}}} | label12 = Alignment | data12 = {{{alignment|}}} | label13 = {{{lbl2|}}} | data13 = {{{data2|}}} | label14 = {{{lbl3|}}} | data14 = {{{data3|}}} | label15 = {{{lbl4|}}} | data15 = {{{data4|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{age|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{gender|}}} {{{pronouns|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{hometown|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} {{{data26|}}} {{{data27|}}} {{{data28|}}} {{{data29|}}} {{{data30|}}} | {{If empty |{{{info-hdr|}}} |Personal information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = Age | data22 = {{{age|}}} | label23 = {{#if: {{{alias|}}} | Alias | Aliases }} | data23 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label24 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data24 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label25 = Gender | data25 = {{{gender|}}} | label26 = Pronouns | data26 = {{{pronouns|}}} | label27 = Title | data27 = {{{title|}}} | label28 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data28 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label29 = Affiliation | data29 = {{{affiliation|}}} | label30 = Relatives | data30 = {{{relatives|}}} | label31 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data31 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label32 = {{#if: {{{significant_other|}}} | Significant other | Significant others }} | data32 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label33 = Children | data33 = {{{children|}}} | label34 = Religion | data34 = {{{religion|}}} | label34 = Hometown | data34 = {{{hometown|}}} | label35 = {{{lbl21|}}} | data35 = {{{data21|}}} | label36 = {{{lbl22|}}} | data36 = {{{data22|}}} | label37 = {{{lbl23|}}} | data37 = {{{data23|}}} | label38 = {{{lbl22|}}} | data38 = {{{data22|}}} | label39 = {{{lbl23|}}} | data39 = {{{data23|}}} | label40 = {{{lbl21|}}} | data40 = {{{data27|}}} | label41 = {{{lbl22|}}} | data41 = {{{data28|}}} | label42 = {{{lbl24|}}} | data42 = {{{data29|}}} | label43 = {{{lbl25|}}} | data43 = {{{data30|}}} | header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 6a4888cf7fb49ece3580cd34b8add22bbba25e09 660 635 2023-11-03T04:21:29Z Gingerdanger 2 wikitext text/x-wiki {{Infobox | bodystyle = border-spacing: 2px 5px; | above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }} | abovestyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} | color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }} | image = {{{image|}}}| | caption = {{{caption|}}} | headerstyle = background: {{If empty |{{{color|}}} |{{{colour|}}} |#DEDEE2 }}; {{#if: {{{color|}}}{{{colour|}}} |color: {{Greater color contrast ratio|{{If empty |{{{color|}}} |{{{colour|}}} }}|black|white }}; }} | label1 = Race | data1 = {{{race|}}} | label2 = Class | data2 = {{{class|}}} | label3 = Subclass | data3 = {{{subclass|}}} | label4 = Player | data4 = {{{creator|}}} | label5 = Art by | data5 = {{{artist|}}} | label6 = STR | data6 = {{{str|}}} | label7 = DEX | data7 = {{{dex|}}} | label8 = CON | data8 = {{{con|}}} | label9 = INT | data9 = {{{int|}}} | label10 = WIS | data10 = {{{wis|}}} | label11 = CHA | data11 = {{{cha|}}} | label12 = Alignment | data12 = {{{alignment|}}} | label13 = {{{lbl2|}}} | data13 = {{{data2|}}} | label14 = {{{lbl3|}}} | data14 = {{{data3|}}} | label15 = {{{lbl4|}}} | data15 = {{{data4|}}} | header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{age|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{gender|}}} {{{pronouns|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{hometown|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} {{{data26|}}} {{{data27|}}} {{{data28|}}} {{{data29|}}} {{{data30|}}} | {{If empty |{{{info-hdr|}}} |Personal information }} }} }} | label21 = Full name | data21 = {{{full_name|}}} | label22 = Age | data22 = {{{age|}}} | label23 = {{#if: {{{alias|}}} | Alias | Aliases }} | data23 = {{If empty |{{{alias|}}} |{{{aliases|}}} }} | label24 = {{#if: {{{nickname|}}} | Nickname | Nicknames }} | data24 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }} | label25 = Gender | data25 = {{{gender|}}} | label26 = Pronouns | data26 = {{{pronouns|}}} | label27 = Title | data27 = {{{title|}}} | label28 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }} | data28 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }} | label29 = Affiliation | data29 = {{{affiliation|}}} | label30 = Relatives | data30 = {{{relatives|}}} | label31 = {{#if: {{{spouse|}}} | Spouse | Spouses }} | data31 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }} | label32 = {{#if: {{{significant_other|}}} | Significant other | Significant others }} | data32 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }} | label33 = Children | data33 = {{{children|}}} | label34 = Religion | data34 = {{{religion|}}} | label35 = Hometown | data35 = {{{hometown|}}} | label36 = {{{lbl21|}}} | data36 = {{{data21|}}} | label37 = {{{lbl22|}}} | data37 = {{{data22|}}} | label38 = {{{lbl23|}}} | data38 = {{{data23|}}} | label39 = {{{lbl24|}}} | data39 = {{{data24|}}} | label40 = {{{lbl25|}}} | data40 = {{{data25|}}} | label41 = {{{lbl26|}}} | data41 = {{{data26|}}} | label42 = {{{lbl27|}}} | data42 = {{{data27|}}} | label43 = {{{lbl28|}}} | data43 = {{{data28|}}} | label44 = {{{lbl29|}}} | data44 = {{{data29|}}} | label45 = {{{lbl30|}}} | data45 = {{{data30|}}} | header50 = {{#if: {{{data51|}}} {{{data52|}}} {{{data53|}}} {{{data54|}}} {{{data55|}}} | {{{extra-hdr|}}} }} | label51 = {{{lbl31|}}} | data51 = {{{data31|}}} | label52 = {{{lbl32|}}} | data52 = {{{data32|}}} | label53 = {{{lbl33|}}} | data53 = {{{data33|}}} | label54 = {{{lbl34|}}} | data54 = {{{data34|}}} | label55 = {{{lbl35|}}} | data55 = {{{data35|}}} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> a663fe41f64b1e81b53e6766056274aa21d23140 Template:Character/doc 10 10 634 21 2023-11-02T22:18:08Z Gingerdanger 2 /* Syntax */ wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | caption = | race = | class = | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = | affiliation = | relatives = | significant_other = | children = | religion = | hometown = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} <pre> {{Character | name = Flowa | image = Example.jpg | imagecaption = Flowa, at rest | aliases = Flo | relatives = | affiliation = | occupation = | marital = | birthDate = July 21st, 2013 | birthPlace = Iowa | deathDate = | deathPlace = | species = Plant | gender = | height = | weight = | eyes = | portrayedby = | appearsin = | debut = }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 711bd5a71a6f5511fd48e0b7454386ab5fc0503d 636 634 2023-11-02T22:19:47Z Gingerdanger 2 /* Sample output */ wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | caption = | race = | class = | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = | affiliation = | relatives = | significant_other = | children = | religion = | hometown = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} <pre> {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 73a458bd958f2c0b42386822a800d99e5b8e445a 638 636 2023-11-02T22:28:39Z Gingerdanger 2 /* Syntax */ wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | caption = | race = | class = | subclass = | player = | artist = | str = | dex = | con = | int = | wis = | cha = | alignment = | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = | affiliation = | relatives = | significant_other = | children = | religion = | hometown = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} <pre> {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> d0768c346afe60e965f03b0e4975245d9ac4d2e4 639 638 2023-11-02T22:29:06Z Gingerdanger 2 /* Sample output */ wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | caption = | race = | class = | subclass = | player = | artist = | str = | dex = | con = | int = | wis = | cha = | alignment = | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = | affiliation = | relatives = | significant_other = | children = | religion = | hometown = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | artist = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} <pre> {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | creator = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> 33d554ab4e30909171208b27ca16b8f265cc0548 642 639 2023-11-02T22:47:16Z Gingerdanger 2 /* Sample output */ wikitext text/x-wiki == Description == To use this template, add the {{T|{{BASEPAGENAME}}}} template and fill in the appropriate fields. Fields left blank will not appear in articles. This infobox template uses [[w:Help:Infobox|Fandom's infobox syntax]]. == Syntax == <pre> {{Character | name = | image = | caption = | race = | class = | subclass = | player = | artist = | str = | dex = | con = | int = | wis = | cha = | alignment = | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = | affiliation = | relatives = | significant_other = | children = | religion = | hometown = }} </pre> == Sample output == {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | artist = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} <pre> {{Character | name = Flowa | image = Example.jpg | caption = Flowa, at rest | race = Firbolg | class = Druid | subclass = | player = | artist = | str = | dex = | con = | int = | wis = | cha = | alignment = Neutral Good | fullname = | age = | gender = | pronouns = | alias = | title = | occupation = Farmer | affiliation = | relatives = | significant_other = | children = | religion = | hometown = Neverwinter }} </pre><includeonly>[[Category:Infobox templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> cca98f5fbdd6b88e855774aa9359567fbcb96562 Marcus Blackblood 0 157 637 187 2023-11-02T22:25:41Z Gingerdanger 2 wikitext text/x-wiki {{Character | name = Marcus Blackblood | image = Example.jpg | caption = | race = Tiefling (Zariel) | class = Warlock | subclass = The Great Old One | player = Justin | artist = | str = 19* | dex = 16 | con = 14 | int = 12 | wis = 13 | cha = 20 | alignment = Neutral Good | age = 23 | gender = | pronouns = He/Him | alias = PC Richard, Marcus Foxlow (legal name) | title = | occupation = | affiliation = [[The Banes of Thunder]], River Rats, Bheren Foxlow (formerly), The Blackblood Elixir (formerly) | relatives = Lawrence Blackblood (Father), Nadia Blackblood (Mother), Holly Blackblood (Sister) | significant_other = Angelica Foxlow (formerly), Blossom | children = | religion = | hometown = Leilon }} == Appearance == == History == Marcus was born the youngest of the Blackblood family of Leilon, a family of Alchemist and Herbalists who are well regarded in the surrounding region. Legends say that the very first Blackblood was able to concoct an elixir so potent that it brought a noble back from the dead. The Blackblood family wore this tale as a badge of honor and named their family shop The Blackblood Elixir as a homage to the very first Blackblood. This shop has been passed down and run by generations of Blackbloods ever since. But Marcus's birth cast a dark shadow over the reputation and multi-generational identity built by the Blackbloods. A myth of sorts had emerged over the years in regards to how the Blackblood Elixir was created, this myth proclaimed that the creator of the potion made a pact with a demon who bestowed them with the knowledge necessary to create it. If this myth were to be believed it would mean that the foundation that their family was built on was lie. This myth would become reality when Marcus was born as Tiefling, which provided evidence of some sort of infernal link in the Blackbloods past. == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] * Gorthok's Cape of Misty Step == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) * ThisleHelm * Shmacles * SolitConfi == Trivia == [[Category:The Party]] 0786dcf1ca618124b906e51bd49368b9213f49f6 641 637 2023-11-02T22:40:21Z Gingerdanger 2 /* Trivia */ wikitext text/x-wiki {{Character | name = Marcus Blackblood | image = Example.jpg | caption = | race = Tiefling (Zariel) | class = Warlock | subclass = The Great Old One | player = Justin | artist = | str = 19* | dex = 16 | con = 14 | int = 12 | wis = 13 | cha = 20 | alignment = Neutral Good | age = 23 | gender = | pronouns = He/Him | alias = PC Richard, Marcus Foxlow (legal name) | title = | occupation = | affiliation = [[The Banes of Thunder]], River Rats, Bheren Foxlow (formerly), The Blackblood Elixir (formerly) | relatives = Lawrence Blackblood (Father), Nadia Blackblood (Mother), Holly Blackblood (Sister) | significant_other = Angelica Foxlow (formerly), Blossom | children = | religion = | hometown = Leilon }} == Appearance == == History == Marcus was born the youngest of the Blackblood family of Leilon, a family of Alchemist and Herbalists who are well regarded in the surrounding region. Legends say that the very first Blackblood was able to concoct an elixir so potent that it brought a noble back from the dead. The Blackblood family wore this tale as a badge of honor and named their family shop The Blackblood Elixir as a homage to the very first Blackblood. This shop has been passed down and run by generations of Blackbloods ever since. But Marcus's birth cast a dark shadow over the reputation and multi-generational identity built by the Blackbloods. A myth of sorts had emerged over the years in regards to how the Blackblood Elixir was created, this myth proclaimed that the creator of the potion made a pact with a demon who bestowed them with the knowledge necessary to create it. If this myth were to be believed it would mean that the foundation that their family was built on was lie. This myth would become reality when Marcus was born as Tiefling, which provided evidence of some sort of infernal link in the Blackbloods past. == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] * Gorthok's Cape of Misty Step == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) * ThisleHelm * Shmacles * SolitConfi == Trivia == [[Category:The Party]] * His strength is normally a 10. However due to the gauntlets, it is functionally a 19. 1809de091127e96c443ce80e21a8913fca0a64b5 670 641 2023-11-10T03:24:04Z Gingerdanger 2 wikitext text/x-wiki {{Character | name = Marcus Blackblood | image = [[File:Marcus art.png|300px]] | caption = | race = Tiefling (Zariel) | class = Warlock | subclass = The Great Old One | player = Justin | artist = | str = 19* | dex = 16 | con = 14 | int = 12 | wis = 13 | cha = 20 | alignment = Neutral Good | age = 23 | gender = | pronouns = He/Him | alias = PC Richard, Marcus Foxlow (legal name) | title = | occupation = | affiliation = [[The Banes of Thunder]], River Rats, Bheren Foxlow (formerly), The Blackblood Elixir (formerly) | relatives = Lawrence Blackblood (Father), Nadia Blackblood (Mother), Holly Blackblood (Sister) | significant_other = Angelica Foxlow (formerly), Blossom | children = | religion = | hometown = Leilon }} == Appearance == == History == Marcus was born the youngest of the Blackblood family of Leilon, a family of Alchemist and Herbalists who are well regarded in the surrounding region. Legends say that the very first Blackblood was able to concoct an elixir so potent that it brought a noble back from the dead. The Blackblood family wore this tale as a badge of honor and named their family shop The Blackblood Elixir as a homage to the very first Blackblood. This shop has been passed down and run by generations of Blackbloods ever since. But Marcus's birth cast a dark shadow over the reputation and multi-generational identity built by the Blackbloods. A myth of sorts had emerged over the years in regards to how the Blackblood Elixir was created, this myth proclaimed that the creator of the potion made a pact with a demon who bestowed them with the knowledge necessary to create it. If this myth were to be believed it would mean that the foundation that their family was built on was lie. This myth would become reality when Marcus was born as Tiefling, which provided evidence of some sort of infernal link in the Blackbloods past. == Notable Items == * [https://roll20.net/compendium/dnd5e/Gauntlets%20of%20Ogre%20Power#content Gauntlets of Ogre Power] * Gorthok's Cape of Misty Step == Additional Companions == * Stinky * Papyrus * Larka Barka * Swiftheart (Swifty) * ThisleHelm * Shmacles * SolitConfi == Trivia == [[Category:The Party]] * His strength is normally a 10. However due to the gauntlets, it is functionally a 19. db2212c879937ddfd390e8e8afe98486b02c556d The Banes of Thunder 0 149 640 165 2023-11-02T22:36:36Z Gingerdanger 2 /* Current */ wikitext text/x-wiki A group of adventurers formed in Phandalin to complete some jobs for the people in order to gain some quick cash. The original members were [[Helu]], [[Marcus Blackblood]], [[Sedge Thistlestrike]]. Other adventurers who joined later include [[Fen Melody]], [[Blossom]], [[Lichen]], and [[Eilif Crimsonlight]]. Allies who have joined include [[Ronaan]] and [[Oscar]]. At first the group had no name. They earned it when Helu, Marcus, Sedge, Fen, and Ronaan took down [[Gorthok, the Thunder Boar]]. == History == HISTORY GOES HERE == Members == === Current === * [[Helu ]] * [[Marcus Blackblood]] * [[Blossom]] * [[Sedge Thistlestrike]] * [[Eilif Crimsonlight]] === Past === * [[Fen Melody]] * [[Lichen]] == Animal Companions == * [[Porsche]] * [[Swifty]] * [[Shitake]] * [[Craic]] * [[Amadán]] == Allies == * Ronaan Wisespeaker * Oscar * The King of Dragonflies * Halia Thorton * Falcon * Pell * Ember == Enemies == * Sir Rhadur Stoman * Gorthok the Thunder Boar * Queen Mab b868cdd6d0011bdcd81cc059b0a0508423c87a4a 648 640 2023-11-03T00:50:05Z Gingerdanger 2 /* Members */ wikitext text/x-wiki A group of adventurers formed in Phandalin to complete some jobs for the people in order to gain some quick cash. The original members were [[Helu]], [[Marcus Blackblood]], [[Sedge Thistlestrike]]. Other adventurers who joined later include [[Fen Melody]], [[Blossom]], [[Lichen]], and [[Eilif Crimsonlight]]. Allies who have joined include [[Ronaan]] and [[Oscar]]. At first the group had no name. They earned it when Helu, Marcus, Sedge, Fen, and Ronaan took down [[Gorthok, the Thunder Boar]]. == History == HISTORY GOES HERE == Members == === Current === * [[Helu Wisehealer]] * [[Marcus Blackblood]] * [[Blossom]] * [[Sedge Thistlestrike]] * [[Eilif Crimsonlight]] === Past === * [[Fen Melody]] * [[Lichen]] == Animal Companions == * [[Porsche]] * [[Swifty]] * [[Shitake]] * [[Craic]] * [[Amadán]] == Allies == * Ronaan Wisespeaker * Oscar * The King of Dragonflies * Halia Thorton * Falcon * Pell * Ember == Enemies == * Sir Rhadur Stoman * Gorthok the Thunder Boar * Queen Mab 41d1177c4bab55bd0e4b244d982cf0142a38a0da File:Blossom.png 6 154 643 179 2023-11-03T00:44:50Z Gingerdanger 2 Gingerdanger uploaded [[File:Blossom.png]] wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Helu.png 6 151 644 176 2023-11-03T00:45:30Z Gingerdanger 2 Gingerdanger uploaded [[File:Helu.png]] wikitext text/x-wiki == Summary == Art by @jupiter-amore 484387269de3818687c6d5d7a48c6353b0ab225a File:Sedge art.png 6 368 645 2023-11-03T00:46:19Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Marcus art.png 6 369 646 2023-11-03T00:46:44Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Eilif chibi.png 6 370 647 2023-11-03T00:47:18Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Helu Wisehealer 0 371 649 2023-11-03T00:51:52Z Gingerdanger 2 Created page with "{{Infobox character | name = Helu | image = | player = Moss | party | age | race | full_name = Helu Wisehealer | alias = Moss | family = | infohdr = Statistics | race = Half elf/half orc | class = Barbarian | subclass = Wild Magic | str = 18 [+4] | dex = 14 [+2] | con = 16 [+3] | wis = 15 [+1] | int..." wikitext text/x-wiki {{Infobox character | name = Helu | image = | player = Moss | party | age | race | full_name = Helu Wisehealer | alias = Moss | family = | infohdr = Statistics | race = Half elf/half orc | class = Barbarian | subclass = Wild Magic | str = 18 [+4] | dex = 14 [+2] | con = 16 [+3] | wis = 15 [+1] | int = 12 [+1] | cha = 12 [+1] }} {{Character|aliases=Moss|relatives=Unnamed adoptive mother Unnamed adoptive father Ronaan Wisespeaker [adoptive brother]|affiliation=The Banes of Thunder|race=Half-Elf, Half-Orc|class=Barbarian|age=16|hometown=Neverwinter|name=Helu|Player=Bones|player=Bones|subclass=Wild Magic|image=Helu.png}} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] 6b7764ec49a9bb8f9a0ec36bd52e3142dee3543c 650 649 2023-11-03T00:54:03Z Gingerdanger 2 wikitext text/x-wiki {{Character | name = Helu | image = | caption = | race = Half-elf/Half-orc | class = Barbarian [9th] | subclass = Wild Magic | player = Moss | artist = | str = 19 | dex = 14 | con = 17 | int = 12 | wis = 15 | cha = 12 | alignment = CG | fullname = | age = 16 | gender = | pronouns = She/her | alias = Moss | title = | occupation = Gladiator (formerly) | affiliation = [[The Banes of Thunder]], Ashkeep (formerly) | relatives = Unnamed adoptive mother, Unnamed adoptive father, Ronaan Wisespeaker [adoptive brother], unnamed adoptive younger brother | significant_other = | children = | religion = | hometown = Neverwinter }} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] fcca556b1dd093d094086148fa9453f39042cfe5 659 650 2023-11-03T04:18:55Z Gingerdanger 2 wikitext text/x-wiki {{Character | name = Helu | image = [[Helu.png]] | caption = | race = Half-elf/Half-orc | class = Barbarian [9th] | subclass = Wild Magic | player = Moss | artist = | str = 19 | dex = 14 | con = 17 | int = 12 | wis = 15 | cha = 12 | alignment = CG | fullname = | age = 16 | gender = | pronouns = She/her | alias = Moss | title = | occupation = Gladiator (formerly) | affiliation = [[The Banes of Thunder]], Ashkeep (formerly) | relatives = Unnamed adoptive mother, Unnamed adoptive father, Ronaan Wisespeaker [adoptive brother], unnamed adoptive younger brother | significant_other = | children = | religion = | hometown = Neverwinter }} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] c8db3e6ff918b4d6513266169d9aea36f5ffb90e 661 659 2023-11-03T05:20:55Z Gingerdanger 2 wikitext text/x-wiki <pre style="white-space: pre-wrap;"{{Character | name = Helu | image = [[File:Helu.png|300px]] | caption = | race = Half-elf/Half-orc | class = Barbarian [9th] | subclass = Wild Magic | player = Moss | artist = | str = 19 | dex = 14 | con = 17 | int = 12 | wis = 15 | cha = 12 | alignment = CG | fullname = | age = 16 | gender = | pronouns = She/her | alias = Moss | title = | occupation = Gladiator (formerly) | affiliation = [[The Banes of Thunder]], Ashkeep (formerly) | relatives = Unnamed adoptive mother, Unnamed adoptive father, Ronaan Wisespeaker [adoptive brother], unnamed adoptive younger brother | significant_other = | children = | religion = | hometown = Neverwinter }}</pre> == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] 80cb24c5d9141e8a988c4b7ace0ab7388f3fafd9 662 661 2023-11-03T05:21:22Z Gingerdanger 2 wikitext text/x-wiki <pre style="white-space: pre-wrap;">{{Character | name = Helu | image = [[File:Helu.png|300px]] | caption = | race = Half-elf/Half-orc | class = Barbarian [9th] | subclass = Wild Magic | player = Moss | artist = | str = 19 | dex = 14 | con = 17 | int = 12 | wis = 15 | cha = 12 | alignment = CG | fullname = | age = 16 | gender = | pronouns = She/her | alias = Moss | title = | occupation = Gladiator (formerly) | affiliation = [[The Banes of Thunder]], Ashkeep (formerly) | relatives = Unnamed adoptive mother, Unnamed adoptive father, Ronaan Wisespeaker [adoptive brother], unnamed adoptive younger brother | significant_other = | children = | religion = | hometown = Neverwinter }}</pre> == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] 16ab1d0301ed0400fad9b2802c9ca4dbb1523c46 663 662 2023-11-03T05:21:55Z Gingerdanger 2 wikitext text/x-wiki {{Character | name = Helu | image = [[File:Helu.png|300px]] | caption = | race = Half-elf/Half-orc | class = Barbarian [9th] | subclass = Wild Magic | player = Moss | artist = | str = 19 | dex = 14 | con = 17 | int = 12 | wis = 15 | cha = 12 | alignment = CG | fullname = | age = 16 | gender = | pronouns = She/her | alias = Moss | title = | occupation = Gladiator (formerly) | affiliation = [[The Banes of Thunder]], Ashkeep (formerly) | relatives = Unnamed adoptive mother, Unnamed adoptive father, Ronaan Wisespeaker [adoptive brother], unnamed adoptive younger brother | significant_other = | children = | religion = | hometown = Neverwinter }} == Appearance == Helu is a young half-elf, half-orc woman, even at sixteen years old she towers over most people, including her party. She possesses considerable strength and, before Eilif joined the Banes, Helu was the strongest of her party. She currently stands at 6' 9" (six feet, nine inches) tall, she has snow white hair cut into a diagonal bob with bangs and violet eyes, her skin is a warm brown with lighter vitiligo patches across her body. While the party is back in Neverwinter, Helu has taken steps to protect her identity from Lord Rhadur Stoman, as well as any of his allies; currently her hair is dyed a dark brown with the crown of her head being a lighter shade of almond, she also wears makeup close to her skin tone to hide her vitiligo, especially on her face and neck. Her current attire is mostly dark browns and blacks, practical (and discreet) for a wandering adventurer, she wears a simple, black, three-quarter sleeved shirt, with a leather "bomber"-styled jacket over top, as well as grey finger-less gloves. A muted, warm orange scarf that can double as a cowl if the need arises, as well as a cloak made from the hide of Gorthok the Thunder Boar. Her pants and boots were found second hand, the pants are a dark wash denim with several brown leather straps, some reinforcing the pants, while others hold small pouches. The pants have leather knee pads and are tucked into severely distressed leather boots. Not shown in the provided picture, her previous hair style were two dutch braids that went down to mid back and had no bangs. The flower crown depicted was made by a previous party member, Fen, as a token of friendship.<br /> == History == <br /> == Notable Items == * Hat of Disguise * Clockwork Amulet * Bag of Devouring * Half of the crown of Neverwinter <br /> == Additional Companions == * Wild magic flumph * Amadán == Trivia == Helu dislikes animals, she has very little to no empathy for them. While this dislike extents to the menagerie the party has amassed, she will do her due diligence and take care of her mount, Amadán. Helu and Oscar have an ongoing battle of wills on who can eat the macadamia nuts before the other can (so far Oscar is winning much to Helu's chagrin, she did buy them for herself after all). Some of Helu's favorite foods are macadamia nuts, chocolate, expertly made meat dishes of any kind, and tiny cupcakes. Her current favorite colors are soft yellows, pinks and blues. [[Category:The Party]] 6699087197a8ea15ef365be6451019d4570c28ad File:Celtic Boar.jpg 6 372 651 2023-11-03T04:07:09Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:CrownofNeverwinter.png 6 373 652 2023-11-03T04:09:08Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:SwordCoast.png 6 374 653 2023-11-03T04:12:21Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Neverwinter.webp 6 375 654 2023-11-03T04:13:18Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:TheFeywild.jpg 6 376 655 2023-11-03T04:14:41Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FeywildPic.jpg 6 377 656 2023-11-03T04:15:17Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:TavernPatrons.png 6 378 657 2023-11-03T04:16:29Z Gingerdanger 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Thunder, Ice, and Everything Nice Wiki 0 2 665 240 2023-11-03T05:43:31Z Gingerdanger 2 wikitext text/x-wiki <div style="text-align: center; font-size: x-large; padding: 1em;">'''Welcome to the {{SITENAME}}!'''</div> In a little town on the Sword Coast, a group of strangers took a quest to earn some cash. How strange to think they would go on to kill a dragon, aid a would-be prince, and fall into the lands of the Fey. Strange happenings surround these adventurers, threatening to snare them in a web of ice and magic, as they rise to fame. ==Important articles== <gallery position="center" captionalign="center" navigation="true"> File:Celtic Boar.jpg|link=The Banes of Thunder|[[The Banes of Thunder]] File:CrownofNeverwinter.png|link=The Crown of Neverwinter| [[The Crown of Neverwinter]] File:SwordCoast.png|link=The Sword Coast| [[The Sword Coast]] File:Neverwinter.webp|link=Neverwinter| [[Neverwinter]] File:FeywildPic.jpg|link=The Feywild| [[The Feywild]] File:TavernPatrons.png|link=NPCs| [[NPCs]] </gallery> <!-- The gallery above works well for individual articles, but it would also be good to have another below it that points to important Category: pages. --> 735105cf72cf01fa4892f8e1e082a89a57910c40 MediaWiki:Common.css 8 379 666 2023-11-03T05:54:28Z Gingerdanger 2 Created page with "<small>Small text</small>/* CSS placed here will be applied to all skins */ .infotable { float: right; padding: 5px; margin-left: 3px; background: #eaecf0; border: 2px solid #003aff; width: 25%; } .infotable th { text-align: left; }" css text/css <small>Small text</small>/* CSS placed here will be applied to all skins */ .infotable { float: right; padding: 5px; margin-left: 3px; background: #eaecf0; border: 2px solid #003aff; width: 25%; } .infotable th { text-align: left; } 6948fb74c48d42bcd68760974bbc029d16dc7c13 Sedge Thistlestrike 0 159 667 198 2023-11-10T03:06:01Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Sedge Thistlestrike|image=Sedge art.png|aliases=Sun/Son Don|relatives=Unnamed Father Unnamed Mother|affiliation=The Banes of Thunder|age=25|hometown=Candlekeep|player=Ike|race=Kalashtar|class=Paladin|subclass=Oath of Devotion|str=17 [+3]|dex=9 [-1]|con=12 [+1]|wis=15 [+2]|int=13 [+1]|cha=17 [+3]}} == Appearance == == History == == Notable Items == * Dragon Slayer Longsword * Goggles of Night * Mithral Chain Mail * Sending Stones * Wand of Pyrotechnics == Additional Companions == * Porche == Trivia == [[Category:The Party]] 27266c9bb8ee6a6c0dc897d94ccec47213ba43bb 668 667 2023-11-10T03:06:49Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Sedge Thistlestrike|image=[[File:Sedge art.png|300px]]|aliases=Sun/Son Don|relatives=Unnamed Father Unnamed Mother|affiliation=The Banes of Thunder|age=25|hometown=Candlekeep|player=Ike|race=Kalashtar|class=Paladin|subclass=Oath of Devotion|str=17 [+3]|dex=9 [-1]|con=12 [+1]|wis=15 [+2]|int=13 [+1]|cha=17 [+3]}} == Appearance == == History == == Notable Items == * Dragon Slayer Longsword * Goggles of Night * Mithral Chain Mail * Sending Stones * Wand of Pyrotechnics == Additional Companions == * Porche == Trivia == [[Category:The Party]] eb68926ca303474335489cb584f7e146acc39b4b Blossom 0 158 669 195 2023-11-10T03:22:03Z Gingerdanger 2 wikitext text/x-wiki {{Character|name=Blossom|image=[[File:Blossom.png|300px]]|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. Current theories about her past range from involvement in the Fey Mob to being the avatar of the missing Queen Titania. During the party's trip to the Fey Wild, she was recognized by a few people from her past, bringing new memories to light.<br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry * Cursed Fedora == Additional Companions == * Craic * Oscar, Fairy Dragon == Trivia == Blossom gets her name from a series of letters in her possession when she woke up in Neverwinter Forest. Blossom, as an Eladrin, can usually be found in her Autumn form. [[Category:The Party]] b425eb269cc08f857074dcd67666222f75b5bd26 671 669 2023-11-12T01:27:34Z 23.243.188.81 0 /* Notable Items */ wikitext text/x-wiki {{Character|name=Blossom|image=[[File:Blossom.png|300px]]|relatives=Unknown|affiliation=The Banes of Thunder|age=Unknown|hometown=Unknown|player=Kate|race=Eladrin|class=Sorcerer|subclass=Wild Magic|str=9 [-1]|dex=16 [+3]|con=15 [+2]|wis=13 [+1]|int=12 [+1]|cha=19 [+4]}} == Appearance == == History == === Before joining the party === Much of Blossom's history from before joining the Banes of Thunder is unknown, as she suffers from amnesia. Current theories about her past range from involvement in the Fey Mob to being the avatar of the missing Queen Titania. During the party's trip to the Fey Wild, she was recognized by a few people from her past, bringing new memories to light.<br /> == Notable Items == * Elven Chain * Immovable Rod * Hat of Wizardry * Cursed Fedora (former) == Additional Companions == * Craic * Oscar, Fairy Dragon == Trivia == Blossom gets her name from a series of letters in her possession when she woke up in Neverwinter Forest. Blossom, as an Eladrin, can usually be found in her Autumn form. [[Category:The Party]] e710963095669ac0f0b5d08682d4ce4fa26e0bed